X-Git-Url: https://git.m6w6.name/?p=awesomized%2Flibmemcached;a=blobdiff_plain;f=libmemcached%2Fconnect.cc;h=dfe69c0b3d51424172360e6ce365e4e7be1fdf0a;hp=1ace3fd8c72b47a39f1dc683d98df5375c5fdbe4;hb=40353ce2b76875202b3d37ad32c645ec18933bed;hpb=00a8f6f7d315dc3fce0b0e5a1987c8663488ae1c diff --git a/libmemcached/connect.cc b/libmemcached/connect.cc index 1ace3fd8..dfe69c0b 100644 --- a/libmemcached/connect.cc +++ b/libmemcached/connect.cc @@ -250,27 +250,26 @@ static void set_socket_options(org::libmemcached::Instance* server) } #ifdef HAVE_SNDTIMEO - if (server->root->snd_timeout) + if (server->root->snd_timeout > 0) { struct timeval waittime; - waittime.tv_sec= 0; - waittime.tv_usec= server->root->snd_timeout; + waittime.tv_sec= server->root->snd_timeout / 1000000; + waittime.tv_usec= server->root->snd_timeout % 1000000; int error= setsockopt(server->fd, SOL_SOCKET, SO_SNDTIMEO, - &waittime, (socklen_t)sizeof(struct timeval)); - (void)(error); + &waittime, (socklen_t)sizeof(struct timeval)); assert(error == 0); } #endif #ifdef HAVE_RCVTIMEO - if (server->root->rcv_timeout) + if (server->root->rcv_timeout > 0) { struct timeval waittime; - waittime.tv_sec= 0; - waittime.tv_usec= server->root->rcv_timeout; + waittime.tv_sec= server->root->rcv_timeout / 1000000; + waittime.tv_usec= server->root->rcv_timeout % 1000000; int error= setsockopt(server->fd, SOL_SOCKET, SO_RCVTIMEO, &waittime, (socklen_t)sizeof(struct timeval)); @@ -737,6 +736,11 @@ static memcached_return_t _memcached_connect(org::libmemcached::Instance* server memcached_return_t memcached_connect_try(org::libmemcached::Instance* server) { + if (server and server->root and server->root->state.is_parsing) + { + return MEMCACHED_SUCCESS; + } + return _memcached_connect(server, false); }