File tree Expand file tree Collapse file tree 1 file changed +16
-5
lines changed Expand file tree Collapse file tree 1 file changed +16
-5
lines changed Original file line number Diff line number Diff line change @@ -277,16 +277,27 @@ int shard_connection::connect(struct connect_info* addr) {
277277 // call connect
278278 m_connection_state = conn_in_progress;
279279
280- if (bufferevent_socket_connect (m_bev,
281- m_unix_sockaddr ? (struct sockaddr *) m_unix_sockaddr : addr->ci_addr ,
282- m_unix_sockaddr ? sizeof (struct sockaddr_un ) : addr->ci_addrlen ) == -1 ) {
280+ while (true ) {
281+ if (bufferevent_socket_connect (m_bev,
282+ m_unix_sockaddr ? (struct sockaddr *) m_unix_sockaddr : addr->ci_addr ,
283+ m_unix_sockaddr ? sizeof (struct sockaddr_un ) : addr->ci_addrlen ) == 0 ) {
284+ return 0 ;
285+ }
286+
287+ if (errno == EINPROGRESS) {
288+ return 0 ;
289+ }
290+
291+ if (errno == EAGAIN || errno == EWOULDBLOCK) {
292+ // resource temporarily unavailable; try again
293+ continue ;
294+ }
295+
283296 disconnect ();
284297
285298 benchmark_error_log (" connect failed, error = %s\n " , strerror (errno));
286299 return -1 ;
287300 }
288-
289- return 0 ;
290301}
291302
292303void shard_connection::disconnect () {
You can’t perform that action at this time.
0 commit comments