X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=libmemcached%2Fio.cc;h=d0e6aaf6f10cb7942d574420b953ecf4dc7d90d6;hb=a28d1ecc082d9d08c4f59f071de9a43fbd08aee3;hp=8fb6ffda1bf7419a097fee68eff6d6893148e69e;hpb=8eeaff6bb2b5bad5113dcbaab2a3c751e94c6177;p=m6w6%2Flibmemcached diff --git a/libmemcached/io.cc b/libmemcached/io.cc index 8fb6ffda..d0e6aaf6 100644 --- a/libmemcached/io.cc +++ b/libmemcached/io.cc @@ -67,14 +67,17 @@ static bool repack_input_buffer(memcached_server_write_instance_st ptr) { do { /* Just try a single read to grab what's available */ - ssize_t nr= recv(ptr->fd, - ptr->read_ptr + ptr->read_data_length, - MEMCACHED_MAX_BUFFER - ptr->read_data_length, - MSG_DONTWAIT); - - switch (nr) + ssize_t nr; + if ((nr= recv(ptr->fd, + ptr->read_ptr + ptr->read_data_length, + MEMCACHED_MAX_BUFFER - ptr->read_data_length, + MSG_DONTWAIT)) <= 0) { - case SOCKET_ERROR: + if (nr == 0) + { + memcached_set_error(*ptr, MEMCACHED_CONNECTION_FAILURE, MEMCACHED_AT); + } + else { switch (get_socket_errno()) { @@ -94,24 +97,19 @@ static bool repack_input_buffer(memcached_server_write_instance_st ptr) memcached_set_errno(*ptr, get_socket_errno(), MEMCACHED_AT); } } - break; - case 0: // Shutdown on the socket has occurred - { - memcached_set_error(*ptr, MEMCACHED_CONNECTION_FAILURE, MEMCACHED_AT); - } break; + } + else // We read data, append to our read buffer + { + ptr->read_data_length+= size_t(nr); + ptr->read_buffer_length+= size_t(nr); - default: - { - ptr->read_data_length+= size_t(nr); - ptr->read_buffer_length+= size_t(nr); - return true; - } - break; + return true; } - } while (0); + } while (false); } + return false; } @@ -180,16 +178,16 @@ static memcached_return_t io_wait(memcached_server_write_instance_st ptr, */ if (read_or_write == MEM_WRITE) { - if (memcached_fatal(memcached_purge(ptr))) + if (memcached_purge(ptr) == false) { return MEMCACHED_FAILURE; } } struct pollfd fds; - memset(&fds, 0, sizeof(pollfd)); fds.fd= ptr->fd; fds.events= POLLIN; + fds.revents= 0; if (read_or_write == MEM_WRITE) /* write */ { @@ -278,9 +276,8 @@ static bool io_flush(memcached_server_write_instance_st ptr, */ { WATCHPOINT_ASSERT(ptr->fd != INVALID_SOCKET); - memcached_return_t rc= memcached_purge(ptr); - if (rc != MEMCACHED_SUCCESS and rc != MEMCACHED_STORED) + if (memcached_purge(ptr) == false) { return false; } @@ -824,7 +821,7 @@ memcached_return_t memcached_io_readline(memcached_server_write_instance_st ptr, } /* Now let's look in the buffer and copy as we go! */ - while (ptr->read_buffer_length && total_nr < size && !line_complete) + while (ptr->read_buffer_length and total_nr < size and line_complete == false) { *buffer_ptr = *ptr->read_ptr; if (*buffer_ptr == '\n')