X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=lib%2Fmemcached_connect.c;h=8ffaaef9fb91057e5c3f6ee1c8aba8c9368ccbdc;hb=1bd637f6eccc1064a4e19e40b14a340818d1ccf3;hp=57274be2086a17d35192dd98bd68c54716de2507;hpb=7ef83f5c1f71a8527a5f3001d72772ac692bcf14;p=m6w6%2Flibmemcached diff --git a/lib/memcached_connect.c b/lib/memcached_connect.c index 57274be2..8ffaaef9 100644 --- a/lib/memcached_connect.c +++ b/lib/memcached_connect.c @@ -14,7 +14,7 @@ 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); + WATCHPOINT_ASSERT(ptr->hosts[server_key].stack_responses == 0); if ((h= gethostbyname(ptr->hosts[server_key].hostname)) == NULL) { @@ -33,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); @@ -57,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) @@ -75,7 +86,7 @@ test_connect: } ptr->connected++; } - assert(ptr->hosts[server_key].stack_responses == 0); + WATCHPOINT_ASSERT(ptr->hosts[server_key].stack_responses == 0); } return MEMCACHED_SUCCESS; @@ -84,7 +95,7 @@ test_connect: memcached_return memcached_connect(memcached_st *ptr, unsigned int server_key) { - memcached_return rc; + memcached_return rc= MEMCACHED_NO_SERVERS; LIBMEMCACHED_MEMCACHED_CONNECT_START(); if (ptr->connected == ptr->number_of_hosts) @@ -101,7 +112,15 @@ memcached_return memcached_connect(memcached_st *ptr, unsigned int server_key) unsigned int x; for (x= 0; x < ptr->number_of_hosts; x++) - rc= memcached_real_connect(ptr, x); + { + memcached_return possible_rc; + + possible_rc= memcached_real_connect(ptr, x); + rc= MEMCACHED_SUCCESS; + + if (possible_rc != MEMCACHED_SUCCESS) + rc= MEMCACHED_SOME_ERRORS; + } } LIBMEMCACHED_MEMCACHED_CONNECT_END();