}
#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));
+ &waittime, (socklen_t)sizeof(struct timeval));
+ (void)error;
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));
+ (void)(error);
assert(error == 0);
}
#endif
int set= 1;
int error= setsockopt(server->fd, SOL_SOCKET, SO_NOSIGPIPE, (void *)&set, sizeof(int));
+ assert(error == 0);
+
// This is not considered a fatal error
if (error == -1)
{
- WATCHPOINT_ERRNO(get_socket_errno());
+#if 0
perror("setsockopt(SO_NOSIGPIPE)");
+#endif
}
}
#endif
linger.l_linger= 0; /* By default on close() just drop the socket */
int error= setsockopt(server->fd, SOL_SOCKET, SO_LINGER,
&linger, (socklen_t)sizeof(struct linger));
+ (void)(error);
assert(error == 0);
}
int error= setsockopt(server->fd, IPPROTO_TCP, TCP_NODELAY,
&flag, (socklen_t)sizeof(int));
+ (void)(error);
assert(error == 0);
}
int error= setsockopt(server->fd, SOL_SOCKET, SO_KEEPALIVE,
&flag, (socklen_t)sizeof(int));
+ (void)(error);
assert(error == 0);
}
{
int error= setsockopt(server->fd, IPPROTO_TCP, TCP_KEEPIDLE,
&server->root->tcp_keepidle, (socklen_t)sizeof(int));
+ (void)(error);
assert(error == 0);
}
#endif
{
int error= setsockopt(server->fd, SOL_SOCKET, SO_SNDBUF,
&server->root->send_size, (socklen_t)sizeof(int));
+ (void)(error);
assert(error == 0);
}
{
int error= setsockopt(server->fd, SOL_SOCKET, SO_RCVBUF,
&server->root->recv_size, (socklen_t)sizeof(int));
+ (void)(error);
assert(error == 0);
}
static memcached_return_t _memcached_connect(org::libmemcached::Instance* server, const bool set_last_disconnected)
{
+ assert(server);
if (server->fd != INVALID_SOCKET)
{
return MEMCACHED_SUCCESS;
if (memcached_success(rc))
{
server->mark_server_as_clean();
+ memcached_version_instance(server);
return rc;
}
else if (set_last_disconnected)
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);
}