X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=libmemcached%2Fdo.cc;h=59f9d5a3ada657c68d74da26837e5d90212fde30;hb=e0165c033349179841bd1658f4068a9e4c075f66;hp=73ef06d34f11063859e19c92e331a4f27288a47a;hpb=a782b52ac1e87fa8e3757c6a5263bf7d01a1160c;p=awesomized%2Flibmemcached diff --git a/libmemcached/do.cc b/libmemcached/do.cc index 73ef06d3..59f9d5a3 100644 --- a/libmemcached/do.cc +++ b/libmemcached/do.cc @@ -11,7 +11,7 @@ #include -static memcached_return_t _vdo_udp(org::libmemcached::Instance* instance, +static memcached_return_t _vdo_udp(memcached_instance_st* instance, libmemcached_io_vector_st vector[], const size_t count) { @@ -64,7 +64,7 @@ static memcached_return_t _vdo_udp(org::libmemcached::Instance* instance, #endif } -memcached_return_t memcached_vdo(org::libmemcached::Instance* instance, +memcached_return_t memcached_vdo(memcached_instance_st* instance, libmemcached_io_vector_st vector[], const size_t count, const bool with_flush) @@ -85,26 +85,23 @@ memcached_return_t memcached_vdo(org::libmemcached::Instance* instance, ** before they start writing, if there is any data in buffer, clear it out, ** otherwise we might get a partial write. **/ + bool sent_success; if (memcached_is_udp(instance->root)) { - return _vdo_udp(instance, vector, count); + sent_success= memcached_success(rc= _vdo_udp(instance, vector, count)); + } else { + sent_success= memcached_io_writev(instance, vector, count, with_flush); } - - bool sent_success= memcached_io_writev(instance, vector, count, with_flush); if (sent_success == false) { - assert(memcached_last_error(instance->root) == MEMCACHED_SUCCESS); - if (memcached_last_error(instance->root) == MEMCACHED_SUCCESS) - { - assert(memcached_last_error(instance->root) != MEMCACHED_SUCCESS); - return memcached_set_error(*instance, MEMCACHED_WRITE_FAILURE, MEMCACHED_AT); - } - else + rc= memcached_last_error(instance->root); + if (rc == MEMCACHED_SUCCESS) { - rc= memcached_last_error(instance->root); + memcached_set_error(*instance, MEMCACHED_WRITE_FAILURE, MEMCACHED_AT); } + memcached_io_reset(instance); } - else if (memcached_is_replying(instance->root)) + else if (memcached_is_replying(instance->root) && !memcached_is_udp(instance->root)) { memcached_server_response_increment(instance); }