X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=libmemcached%2Fdo.cc;h=c3cfab9389b4339dfc8c0e5d49aeb3210223d550;hb=c3136bce4decf4259ebb60ea2425b47017ad7bb1;hp=551b28ea57ce21393fcbaefbb47dc800b7f20724;hpb=bd53173d0a23c8c2a0dac68056cbd2cc52d5a6ef;p=awesomized%2Flibmemcached diff --git a/libmemcached/do.cc b/libmemcached/do.cc index 551b28ea..c3cfab93 100644 --- a/libmemcached/do.cc +++ b/libmemcached/do.cc @@ -30,7 +30,7 @@ memcached_return_t memcached_do(memcached_server_write_instance_st ptr, const vo ** 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) + if (memcached_is_udp(ptr->root) and with_flush and ptr->write_buffer_offset > UDP_DATAGRAM_HEADER_LENGTH) { memcached_io_write(ptr, NULL, 0, true); } @@ -70,9 +70,13 @@ memcached_return_t memcached_vdo(memcached_server_write_instance_st ptr, ** 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) + if (memcached_is_udp(ptr->root) and with_flush and ptr->write_buffer_offset > UDP_DATAGRAM_HEADER_LENGTH) { - memcached_io_write(ptr, NULL, 0, true); + if (memcached_io_write(ptr, NULL, 0, true) == -1) + { + memcached_io_reset(ptr); + return memcached_set_error(*ptr, MEMCACHED_WRITE_FAILURE, MEMCACHED_AT); + } } ssize_t sent_length= memcached_io_writev(ptr, vector, count, with_flush);