- ptr->cached_errno= errno;
- WATCHPOINT_ERRNO(ptr->cached_errno);
- WATCHPOINT_NUMBER(ptr->root->connect_timeout);
- memcached_quit_server(ptr, 1);
-
- if (ptr->root->retry_timeout)
- {
- struct timeval next_time;
-
- gettimeofday(&next_time, NULL);
- ptr->next_retry= next_time.tv_sec + ptr->root->retry_timeout;
- }
- ptr->server_failure_counter+= 1;
-
- return MEMCACHED_ERRNO;
+ int err;
+ socklen_t len = sizeof (err);
+ (void)getsockopt(ptr->fd, SOL_SOCKET, SO_ERROR, &err, &len);
+ ptr->cached_errno= (err == 0) ? errno : err;