X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=libmemcached%2Fconnect.c;h=a7b17f0ce359e9085761f5421d07f8dacc4d34dc;hb=0f16555031c7f44d1acd034ff74e628c51a72dac;hp=5e0c046bd797cdc6ab97d0e67fde5bedcbc1bed9;hpb=5ba395ad3a28f000bdabc7312dcee483c14d996e;p=awesomized%2Flibmemcached diff --git a/libmemcached/connect.c b/libmemcached/connect.c index 5e0c046b..a7b17f0c 100644 --- a/libmemcached/connect.c +++ b/libmemcached/connect.c @@ -9,7 +9,8 @@ * */ -#include "common.h" +#include +#include #include #include @@ -89,6 +90,7 @@ static memcached_return_t set_hostinfo(memcached_server_st *server) struct addrinfo hints; char str_port[NI_MAXSERV]; + assert(! server->address_info); // We cover the case where a programming mistake has been made. if (server->address_info) { freeaddrinfo(server->address_info); @@ -163,7 +165,9 @@ static inline memcached_return_t set_socket_nonblocking(memcached_server_st *ptr int flags; do + { flags= fcntl(ptr->fd, F_GETFL, 0); + } while (flags == -1 && (errno == EINTR || errno == EAGAIN)); unlikely (flags == -1) @@ -176,7 +180,9 @@ static inline memcached_return_t set_socket_nonblocking(memcached_server_st *ptr int rval; do + { rval= fcntl(ptr->fd, F_SETFL, flags | O_NONBLOCK); + } while (rval == -1 && (errno == EINTR || errno == EAGAIN)); unlikely (rval == -1)