+ memcached_quit_server(ptr, 1);
+}
+
+/**
+ * Read a given number of bytes from the server and place it into a specific
+ * buffer. Reset the IO channel on this server if an error occurs.
+ */
+memcached_return memcached_safe_read(memcached_server_st *ptr,
+ void *dta,
+ size_t size)
+{
+ size_t offset= 0;
+ char *data= dta;
+
+ while (offset < size)
+ {
+ ssize_t nread= memcached_io_read(ptr, data + offset, size - offset);
+ if (nread <= 0)
+ {
+ memcached_io_reset(ptr);
+ return MEMCACHED_UNKNOWN_READ_FAILURE;
+ }
+ offset+= nread;
+ }
+
+ return MEMCACHED_SUCCESS;