X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;ds=sidebyside;f=lib%2Fmemcached_connect.c;h=34613ddd13a7a1007a8ec45b3bbdd2ed69170911;hb=02c35e9f14dddc82c86f246002b91bf8e25cbaa3;hp=116423cea9d98ce926f94684fb84e758a24f7aba;hpb=d6505b16fb85f77527934510d0395adfcbb66377;p=m6w6%2Flibmemcached diff --git a/lib/memcached_connect.c b/lib/memcached_connect.c index 116423ce..34613ddd 100644 --- a/lib/memcached_connect.c +++ b/lib/memcached_connect.c @@ -13,6 +13,9 @@ memcached_return memcached_real_connect(memcached_st *ptr, unsigned int server_k if (ptr->hosts[server_key].fd == -1) { + /* Old connection junk still is in the structure */ + assert(ptr->hosts[server_key].stack_responses == 0); + if ((h= gethostbyname(ptr->hosts[server_key].hostname)) == NULL) { ptr->my_errno= h_errno; @@ -30,7 +33,6 @@ memcached_return memcached_real_connect(memcached_st *ptr, unsigned int server_k return MEMCACHED_CONNECTION_SOCKET_CREATE_FAILURE; } - /* bind any port number */ localAddr.sin_family = AF_INET; localAddr.sin_addr.s_addr = htonl(INADDR_ANY); @@ -54,6 +56,18 @@ memcached_return memcached_real_connect(memcached_st *ptr, unsigned int server_k &flag, (socklen_t)sizeof(int)); } + if (ptr->send_size) + { + setsockopt(ptr->hosts[server_key].fd, SOL_SOCKET, SO_SNDBUF, + &ptr->send_size, (socklen_t)sizeof(int)); + } + + if (ptr->recv_size) + { + setsockopt(ptr->hosts[server_key].fd, SOL_SOCKET, SO_SNDBUF, + &ptr->recv_size, (socklen_t)sizeof(int)); + } + /* connect to server */ test_connect: if (connect(ptr->hosts[server_key].fd, (struct sockaddr *) &servAddr, sizeof(servAddr)) < 0) @@ -72,6 +86,7 @@ test_connect: } ptr->connected++; } + assert(ptr->hosts[server_key].stack_responses == 0); } return MEMCACHED_SUCCESS;