X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=libmemcached%2Fdo.cc;h=db533680f77193f80ea3dd6ce37eb65bcb1f3639;hb=21f850c451cb7db8a0085ddcc892290ecac859eb;hp=2ce64483485a92c08da9c46a5d4cf2be49eb2235;hpb=a2d3699da26720a399bd7f563ccdbccf26e610c5;p=awesomized%2Flibmemcached diff --git a/libmemcached/do.cc b/libmemcached/do.cc index 2ce64483..db533680 100644 --- a/libmemcached/do.cc +++ b/libmemcached/do.cc @@ -11,7 +11,7 @@ #include -memcached_return_t memcached_vdo(memcached_server_write_instance_st instance, +memcached_return_t memcached_vdo(org::libmemcached::Instance* instance, libmemcached_io_vector_st vector[], const size_t count, const bool with_flush) @@ -23,7 +23,7 @@ memcached_return_t memcached_vdo(memcached_server_write_instance_st instance, if (memcached_failed(rc= memcached_connect(instance))) { WATCHPOINT_ERROR(rc); - assert_msg(instance->error_messages, "memcached_connect() returned an error but the memcached_server_write_instance_st showed none."); + assert_msg(instance->error_messages, "memcached_connect() returned an error but the Instance showed none."); return rc; } @@ -48,7 +48,11 @@ memcached_return_t memcached_vdo(memcached_server_write_instance_st instance, vector[0].length= UDP_DATAGRAM_HEADER_LENGTH; msg.msg_iov= (struct iovec*)vector; +#if defined(TARGET_OS_OSX) && TARGET_OS_OSX + msg.msg_iovlen= int(count); +#else msg.msg_iovlen= count; +#endif uint32_t retry= 5; while (--retry) @@ -72,14 +76,8 @@ memcached_return_t memcached_vdo(memcached_server_write_instance_st instance, return MEMCACHED_SUCCESS; } - ssize_t sent_length= memcached_io_writev(instance, vector, count, with_flush); - size_t command_length= 0; - for (uint32_t x= 0; x < count; ++x, vector++) - { - command_length+= vector->length; - } - - if (sent_length == -1 or size_t(sent_length) != command_length) + bool sent_success= memcached_io_writev(instance, vector, count, with_flush); + if (sent_success == false) { if (memcached_last_error(instance->root) == MEMCACHED_SUCCESS) {