*/
memmove(instance->read_buffer, instance->read_ptr, instance->read_buffer_length);
instance->read_ptr= instance->read_buffer;
- instance->read_data_length= instance->read_buffer_length;
}
/* There is room in the buffer, try to fill it! */
/* Just try a single read to grab what's available */
ssize_t nr;
if ((nr= ::recv(instance->fd,
- instance->read_ptr + instance->read_data_length,
- MEMCACHED_MAX_BUFFER - instance->read_data_length,
+ instance->read_ptr + instance->read_buffer_length,
+ MEMCACHED_MAX_BUFFER - instance->read_buffer_length,
MSG_NOSIGNAL)) <= 0)
{
if (nr == 0)
}
else // We read data, append to our read buffer
{
- instance->read_data_length+= size_t(nr);
instance->read_buffer_length+= size_t(nr);
return true;
case EFAULT:
case ENOMEM:
memcached_set_error(*instance, MEMCACHED_MEMORY_ALLOCATION_FAILURE, MEMCACHED_AT);
+ break;
case EINVAL:
memcached_set_error(*instance, MEMCACHED_MEMORY_ALLOCATION_FAILURE, MEMCACHED_AT, memcached_literal_param("RLIMIT_NOFILE exceeded, or if OSX the timeout value was invalid"));
+ break;
default:
memcached_set_errno(*instance, local_errno, MEMCACHED_AT, memcached_literal_param("poll"));
WATCHPOINT_ASSERT(0);
case EBADF:
assert_msg(instance->fd != INVALID_SOCKET, "Programmer error, invalid socket");
+ /* fall through */
case EINVAL:
case EFAULT:
case ECONNREFUSED:
} while (data_read <= 0);
instance->io_bytes_sent= 0;
- instance->read_data_length= (size_t) data_read;
instance->read_buffer_length= (size_t) data_read;
instance->read_ptr= instance->read_buffer;
assert(0);
case EBADF:
assert_msg(instance->fd != INVALID_SOCKET, "Invalid socket state");
+ /* fall through */
case EINVAL:
case EFAULT:
case ECONNREFUSED: