145
145
hints.ai_protocol= IPPROTO_TCP;
149
switch(errcode= getaddrinfo(server->hostname, str_port, &hints, &server->address_info))
151
int e= getaddrinfo(server->hostname, str_port, &hints, &server->address_info);
157
else if (e == EAI_AGAIN)
160
struct timespec dream, rem;
165
nanosleep(&dream, &rem);
155
return memcached_set_error(*server, MEMCACHED_TIMEOUT, MEMCACHED_AT, memcached_string_make_from_cstr(gai_strerror(errcode)));
158
return memcached_set_errno(*server, errno, MEMCACHED_AT, memcached_literal_param("getaddrinfo(EAI_SYSTEM)"));
161
return memcached_set_error(*server, MEMCACHED_INVALID_ARGUMENTS, MEMCACHED_AT, memcached_literal_param("getaddrinfo(EAI_BADFLAGS)"));
164
return memcached_set_error(*server, MEMCACHED_ERRNO, MEMCACHED_AT, memcached_literal_param("getaddrinfo(EAI_MEMORY)"));
171
168
WATCHPOINT_STRING(server->hostname);
172
169
WATCHPOINT_STRING(gai_strerror(e));
173
return MEMCACHED_HOST_LOOKUP_FAILURE;
170
return memcached_set_error(*server, MEMCACHED_HOST_LOOKUP_FAILURE, MEMCACHED_AT, memcached_string_make_from_cstr(gai_strerror(errcode)));
177
173
server->address_info_next= server->address_info;
179
175
return MEMCACHED_SUCCESS;
186
182
if (ioctlsocket(ptr->fd, FIONBIO, &arg) == SOCKET_ERROR)
188
ptr->cached_errno= get_socket_errno();
189
return MEMCACHED_CONNECTION_FAILURE;
184
return memcached_set_errno(*ptr, get_socket_errno(), NULL);
200
195
unlikely (flags == -1)
202
ptr->cached_errno= errno;
203
return MEMCACHED_CONNECTION_FAILURE;
197
return memcached_set_errno(*ptr, errno, NULL);
205
199
else if ((flags & O_NONBLOCK) == 0)
364
357
if ((ptr->fd= socket(AF_UNIX, SOCK_STREAM, 0)) < 0)
366
ptr->cached_errno= errno;
367
return MEMCACHED_CONNECTION_SOCKET_CREATE_FAILURE;
359
return memcached_set_errno(*ptr, errno, NULL);
370
362
struct sockaddr_un servAddr;
409
401
WATCHPOINT_ASSERT(ptr->fd == INVALID_SOCKET);
410
402
WATCHPOINT_ASSERT(ptr->cursor_active == 0);
412
if (! ptr->address_info)
404
if (not ptr->address_info)
414
memcached_return_t rc= set_hostinfo(ptr);
415
if (rc != MEMCACHED_SUCCESS)
406
memcached_return_t rc;
410
if ((rc= set_hostinfo(ptr)) != MEMCACHED_TIMEOUT)
414
struct timespec dream, rem;
419
nanosleep(&dream, &rem);
423
if (memcached_failed(rc))
430
438
ptr->address_info_next->ai_socktype,
431
439
ptr->address_info_next->ai_protocol)) < 0)
433
ptr->cached_errno= get_socket_errno();
434
WATCHPOINT_ERRNO(get_socket_errno());
435
return MEMCACHED_CONNECTION_SOCKET_CREATE_FAILURE;
441
return memcached_set_errno(*ptr, get_socket_errno(), NULL);
438
444
(void)set_socket_options(ptr);
571
577
if (ptr->fd != INVALID_SOCKET && ptr->root->sasl.callbacks)
573
579
rc= memcached_sasl_authenticate_connection(ptr);
574
if (rc != MEMCACHED_SUCCESS)
580
if (memcached_failed(rc))
576
582
(void)closesocket(ptr->fd);
577
583
ptr->fd= INVALID_SOCKET;