size_t loop_max= 5;
- while (--loop_max) // Should only loop on cases of ERESTART or EINTR
+ if (ptr->root->poll_timeout == 0)
{
- int error;
- if (ptr->root->poll_timeout)
- {
- error= poll(fds, 1, ptr->root->connect_timeout);
- }
- else
- {
- error= 0;
- }
+ return memcached_set_error(*ptr, MEMCACHED_TIMEOUT, MEMCACHED_AT);
+ }
+ while (--loop_max) // Should only loop on cases of ERESTART or EINTR
+ {
+ int error= poll(fds, 1, ptr->root->connect_timeout);
switch (error)
{
case 1:
ptr->cached_errno= get_socket_errno();
}
+ WATCHPOINT_ASSERT(ptr->fd != INVALID_SOCKET);
(void)closesocket(ptr->fd);
ptr->fd= INVALID_SOCKET;
ptr->state= MEMCACHED_SERVER_STATE_NEW;
static memcached_return_t set_hostinfo(memcached_server_st *server)
{
- assert(! server->address_info); // We cover the case where a programming mistake has been made.
+ WATCHPOINT_ASSERT(not server->address_info); // We cover the case where a programming mistake has been made.
if (server->address_info)
{
freeaddrinfo(server->address_info);
default:
{
WATCHPOINT_STRING(server->hostname);
- WATCHPOINT_STRING(gai_strerror(e));
+ WATCHPOINT_STRING(gai_strerror(errcode));
return memcached_set_error(*server, MEMCACHED_HOST_LOOKUP_FAILURE, MEMCACHED_AT, memcached_string_make_from_cstr(gai_strerror(errcode)));
}
}
break;
case EINTR: // Special case, we retry ai_addr
+ WATCHPOINT_ASSERT(ptr->fd != INVALID_SOCKET);
(void)closesocket(ptr->fd);
ptr->fd= INVALID_SOCKET;
- ptr->state= MEMCACHED_SERVER_STATE_NEW;
continue;
default:
break;
}
+ WATCHPOINT_ASSERT(ptr->fd != INVALID_SOCKET);
(void)closesocket(ptr->fd);
ptr->fd= INVALID_SOCKET;
ptr->address_info_next= ptr->address_info_next->ai_next;
case MEMCACHED_CONNECTION_TCP:
rc= network_connect(ptr);
#ifdef LIBMEMCACHED_WITH_SASL_SUPPORT
- if (ptr->fd != INVALID_SOCKET && ptr->root->sasl.callbacks)
+ if (ptr->fd != INVALID_SOCKET and ptr->root->sasl.callbacks)
{
rc= memcached_sasl_authenticate_connection(ptr);
- if (memcached_failed(rc))
+ if (memcached_failed(rc) and ptr->fd != INVALID_SOCKET)
{
+ WATCHPOINT_ASSERT(ptr->fd != INVALID_SOCKET);
(void)closesocket(ptr->fd);
ptr->fd= INVALID_SOCKET;
}