if (ptr->type == MEMCACHED_CONNECTION_UDP)
return MEMCACHED_SUCCESS;
+#ifdef HAVE_SNDTIMEO
if (ptr->root->snd_timeout)
{
int error;
&waittime, (socklen_t)sizeof(struct timeval));
WATCHPOINT_ASSERT(error == 0);
}
+#endif
+#ifdef HAVE_RCVTIMEO
if (ptr->root->rcv_timeout)
{
int error;
&waittime, (socklen_t)sizeof(struct timeval));
WATCHPOINT_ASSERT(error == 0);
}
+#endif
{
int error;
}
}
- if (ptr->sockaddr_inited == MEMCACHED_NOT_ALLOCATED ||
+ if (ptr->sockaddr_inited ||
(!(ptr->root->flags & MEM_USE_CACHE_LOOKUPS)))
{
memcached_return rc;
rc= set_hostinfo(ptr);
if (rc != MEMCACHED_SUCCESS)
return rc;
- ptr->sockaddr_inited= MEMCACHED_ALLOCATED;
+ ptr->sockaddr_inited= true;
}
use= ptr->address_info;
{
goto handle_retry;
}
- else if (error != 1 || fds[0].revents & POLLERR)
+ else if (error != 1 && fds[0].revents & POLLERR)
{
ptr->cached_errno= errno;
WATCHPOINT_ERRNO(ptr->cached_errno);
WATCHPOINT_NUMBER(ptr->root->connect_timeout);
- close(ptr->fd);
- ptr->fd= -1;
- if (ptr->address_info)
- {
- freeaddrinfo(ptr->address_info);
- ptr->address_info= NULL;
- }
+ memcached_quit_server(ptr, 1);
if (ptr->root->retry_timeout)
{
ptr->next_retry= next_time.tv_sec + ptr->root->retry_timeout;
}
ptr->server_failure_counter+= 1;
+
return MEMCACHED_ERRNO;
}