X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=lib%2Fmemcached_io.c;h=8615aa6e13eb38c0433bba15e95fab12a4473ceb;hb=81be4de01a86e73b9222f7e92d0a6f7476029864;hp=77df4319076b8286203cc7d6adfdbb4ea3660c00;hpb=852e3f2d609c4aac766405c27cd8c6774fb20a23;p=m6w6%2Flibmemcached diff --git a/lib/memcached_io.c b/lib/memcached_io.c index 77df4319..8615aa6e 100644 --- a/lib/memcached_io.c +++ b/lib/memcached_io.c @@ -17,10 +17,29 @@ ssize_t memcached_io_read(memcached_st *ptr, unsigned int server_key, { if (!ptr->read_buffer_length) { - ptr->read_buffer_length= recv(ptr->hosts[server_key].fd, - ptr->read_buffer, - MEMCACHED_MAX_BUFFER, 0); - ptr->read_ptr= ptr->read_buffer; + if (length > 1) + { + + size_t data_read; + data_read= recv(ptr->hosts[server_key].fd, + buffer_ptr, + length - x, 0); + if (data_read == -1) + return -1; + if (data_read == 0) + return x; + + data_read+= x; + + return data_read; + } + else + { + ptr->read_buffer_length= recv(ptr->hosts[server_key].fd, + ptr->read_buffer, + MEMCACHED_MAX_BUFFER, 0); + ptr->read_ptr= ptr->read_buffer; + } if (ptr->read_buffer_length == -1) return -1;