X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=lib%2Fmemcached_io.c;h=299d4390659616b21ebd8a4b4b050dc6df7603ca;hb=51ccc3f82cc9bab7cf05e3b07b8a8b319349bde0;hp=84928d2b40b5459e42acd1c7160d2e4d0a0acd31;hpb=90c4182ab1eb7f2da203258f62cf33a229ba1346;p=m6w6%2Flibmemcached diff --git a/lib/memcached_io.c b/lib/memcached_io.c index 84928d2b..299d4390 100644 --- a/lib/memcached_io.c +++ b/lib/memcached_io.c @@ -57,7 +57,7 @@ void memcached_io_preread(memcached_st *ptr) for (x= 0; x < ptr->number_of_hosts; x++) { - if (ptr->hosts[x].cursor_active && + if (memcached_server_response_count(ptr, x) && ptr->hosts[x].read_data_length < MEMCACHED_MAX_BUFFER ) { size_t data_read; @@ -83,6 +83,7 @@ ssize_t memcached_io_read(memcached_st *ptr, unsigned int server_key, while (length) { + uint8_t found_eof= 0; if (!ptr->hosts[server_key].read_buffer_length) { size_t data_read; @@ -118,7 +119,13 @@ ssize_t memcached_io_read(memcached_st *ptr, unsigned int server_key, } else if (data_read) break; - /* If zero, just keep looping */ + /* If zero, just keep looping unless testing, then assert() */ + else + { + WATCHPOINT_ASSERT(0); + found_eof= 1; + break; + } } ptr->hosts[server_key].read_data_length= data_read; @@ -146,6 +153,9 @@ ssize_t memcached_io_read(memcached_st *ptr, unsigned int server_key, ptr->hosts[server_key].read_buffer_length--; buffer_ptr++; } + + if (found_eof) + break; } return (size_t)(buffer_ptr - buffer);