You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@rocketmq.apache.org by if...@apache.org on 2020/12/29 03:36:18 UTC

[rocketmq-client-cpp] 01/29: Catch exception when resolve domain failed

This is an automated email from the ASF dual-hosted git repository.

ifplusor pushed a commit to branch re_dev
in repository https://gitbox.apache.org/repos/asf/rocketmq-client-cpp.git

commit 3636d60d6a034b551d74a83da1a6e030033819f1
Author: James Yin <yw...@hotmail.com>
AuthorDate: Fri May 22 12:07:13 2020 +0800

    Catch exception when resolve domain failed
---
 src/transport/EventLoop.cpp | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)

diff --git a/src/transport/EventLoop.cpp b/src/transport/EventLoop.cpp
index b1ccde7..62e535c 100644
--- a/src/transport/EventLoop.cpp
+++ b/src/transport/EventLoop.cpp
@@ -30,7 +30,7 @@ EventLoop* EventLoop::GetDefaultEventLoop() {
 
 EventLoop::EventLoop(const struct event_config* config, bool run_immediately)
     : m_eventBase(nullptr), m_loopThread("EventLoop"), _is_running(false) {
-  // tell libevent support multi-threads
+// tell libevent support multi-threads
 #ifdef WIN32
   evthread_use_windows_threads();
 #else
@@ -206,9 +206,14 @@ int BufferEvent::connect(const std::string& addr) {
     return -1;
   }
 
-  auto* sa = string2SocketAddress(addr);
-  m_peerAddrPort = socketAddress2String(sa);  // resolve domain
-  return bufferevent_socket_connect(m_bufferEvent, sa, sockaddr_size(sa));
+  try {
+    auto* sa = string2SocketAddress(addr);  // resolve domain
+    m_peerAddrPort = socketAddress2String(sa);
+    return bufferevent_socket_connect(m_bufferEvent, sa, sockaddr_size(sa));
+  } catch (const std::exception& e) {
+    LOG_ERROR_NEW("can not connect to {}, {}", addr, e.what());
+    return -1;
+  }
 }
 
 void BufferEvent::close() {