X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=libmemcached%2Fmemcached_do.c;h=b46805a02acc0c6219beb2620c7ef7bbf8b45929;hb=dd7bb96826037b01b659f59498f6318cf577909e;hp=c364efe8c6a12bb5126e73296a47de7cb3e1a04e;hpb=be8517b3df8bd7caf7f76f03156efec7dead00ce;p=awesomized%2Flibmemcached diff --git a/libmemcached/memcached_do.c b/libmemcached/memcached_do.c index c364efe8..b46805a0 100644 --- a/libmemcached/memcached_do.c +++ b/libmemcached/memcached_do.c @@ -15,6 +15,14 @@ memcached_return memcached_do(memcached_server_st *ptr, const void *command, return rc; } + /* + ** Since non buffering ops in UDP mode dont check to make sure they will fit + ** before they start writing, if there is any data in buffer, clear it out, + ** otherwise we might get a partial write. + **/ + if (ptr->type == MEMCACHED_CONNECTION_UDP && with_flush && ptr->write_buffer_offset > UDP_DATAGRAM_HEADER_LENGTH) + memcached_io_write(ptr, NULL, 0, 1); + sent_length= memcached_io_write(ptr, command, command_length, with_flush); if (sent_length == -1 || (size_t)sent_length != command_length)