X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=libtest%2Fclient.cc;h=c536e9dd47f06bbda942fbbaa7644d53dd6e3ad0;hb=f0b6a382ea0be4c327f9968cf5d65ac1dd8bdf4c;hp=c4d2df37906e9713f634050d716b5f1d58666111;hpb=eda29b12ede05e6e62bb9032a4bddc82d0e3d0ab;p=awesomized%2Flibmemcached diff --git a/libtest/client.cc b/libtest/client.cc index c4d2df37..c536e9dd 100644 --- a/libtest/client.cc +++ b/libtest/client.cc @@ -176,13 +176,29 @@ bool SimpleClient::instance_connect() { if (connect(sock_fd, address_info_next->ai_addr, address_info_next->ai_addrlen) == SOCKET_ERROR) { + switch (errno) + { + case EINTR: + close_socket(); + continue; + + case EINPROGRESS: // nonblocking mode - first return + case EALREADY: // nonblocking mode - subsequent returns + continue; // Jump to while() and continue on + + + case ECONNREFUSED: + default: + break; + } + close_socket(); _error= strerror(errno); } } else { - fatal_message(strerror(errno)); + FATAL(strerror(errno)); } address_info_next= address_info_next->ai_next; }