X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=libmemcached%2Fquit.c;h=35d434bc6b7886a4634edbec083f5872699278d7;hb=4eaa0bce7fc5f1d48662357d7237d103793783be;hp=8b5acf67d1f056727f38328241af7b0c4abac6c4;hpb=9979e3f8206c764a881550dda41a444f005206f3;p=awesomized%2Flibmemcached diff --git a/libmemcached/quit.c b/libmemcached/quit.c index 8b5acf67..35d434bc 100644 --- a/libmemcached/quit.c +++ b/libmemcached/quit.c @@ -13,11 +13,13 @@ void memcached_quit_server(memcached_server_st *ptr, bool io_death) { if (ptr->fd != -1) { - if (io_death == false && ptr->type != MEMCACHED_CONNECTION_UDP) + if (io_death == false && ptr->type != MEMCACHED_CONNECTION_UDP && ptr->options.is_shutting_down == false) { memcached_return_t rc; char buffer[MEMCACHED_MAX_BUFFER]; + ptr->options.is_shutting_down= true; + if (ptr->root->flags.binary_protocol) { protocol_binary_request_quit request = {.bytes= {0}}; @@ -59,6 +61,7 @@ void memcached_quit_server(memcached_server_st *ptr, bool io_death) ptr->write_buffer_offset= (size_t) ((ptr->type == MEMCACHED_CONNECTION_UDP) ? UDP_DATAGRAM_HEADER_LENGTH : 0); ptr->read_buffer_length= 0; ptr->read_ptr= ptr->read_buffer; + ptr->options.is_shutting_down= false; memcached_server_response_reset(ptr); if (io_death) @@ -78,10 +81,10 @@ void memcached_quit(memcached_st *ptr) { for (x= 0; x < memcached_server_count(ptr); x++) { - memcached_server_instance_st *instance= + memcached_server_write_instance_st instance= memcached_server_instance_fetch(ptr, x); - memcached_quit_server(instance, 0); + memcached_quit_server(instance, false); } } }