Remove udp call in IO.
[m6w6/libmemcached] / libmemcached / io.cc
index 2b0866dc7ac9d86c6fd1626008272f3458fb5fe4..e7a0627ec4775c38dafd631ee15666478ccea9fe 100644 (file)
@@ -131,7 +131,7 @@ static bool process_input_buffer(memcached_server_write_instance_st ptr)
    ** We might be able to process some of the response messages if we
    ** have a callback set up
  */
-  if (ptr->root->callbacks != NULL && ptr->root->flags.use_udp == false)
+  if (ptr->root->callbacks != NULL)
   {
     /*
      * We might have responses... try to read them out and fire
@@ -296,18 +296,6 @@ static bool io_flush(memcached_server_write_instance_st ptr,
 
   WATCHPOINT_ASSERT(ptr->fd != INVALID_SOCKET);
 
-  // UDP Sanity check, make sure that we are not sending somthing too big
-  if (memcached_is_udp(ptr->root) and write_length > MAX_UDP_DATAGRAM_LENGTH)
-  {
-    error= memcached_set_error(*ptr, MEMCACHED_WRITE_FAILURE, MEMCACHED_AT);
-    return false;
-  }
-
-  if (ptr->write_buffer_offset == 0 or (memcached_is_udp(ptr->root) and ptr->write_buffer_offset == UDP_DATAGRAM_HEADER_LENGTH))
-  {
-    return true;
-  }
-
   /* Looking for memory overflows */
 #if defined(DEBUG)
   if (write_length == MEMCACHED_MAX_BUFFER)
@@ -319,10 +307,6 @@ static bool io_flush(memcached_server_write_instance_st ptr,
   {
     WATCHPOINT_ASSERT(ptr->fd != INVALID_SOCKET);
     WATCHPOINT_ASSERT(write_length > 0);
-    if (memcached_is_udp(ptr->root))
-    {
-      increment_udp_message_id(ptr);
-    }
 
     ssize_t sent_length= 0;
     WATCHPOINT_ASSERT(ptr->fd != INVALID_SOCKET);
@@ -387,13 +371,6 @@ static bool io_flush(memcached_server_write_instance_st ptr,
       }
     }
 
-    if (memcached_is_udp(ptr->root) and size_t(sent_length) != write_length)
-    {
-      memcached_quit_server(ptr, true);
-      error= memcached_set_error(*ptr, MEMCACHED_WRITE_FAILURE, MEMCACHED_AT);
-      return false;
-    }
-
     ptr->io_bytes_sent+= uint32_t(sent_length);
 
     local_write_ptr+= sent_length;
@@ -419,8 +396,9 @@ memcached_return_t memcached_io_wait_for_write(memcached_server_write_instance_s
 }
 
 memcached_return_t memcached_io_read(memcached_server_write_instance_st ptr,
-                                     void *buffer, size_t length, ssize_t *nread)
+                                     void *buffer, size_t length, ssize_tnread)
 {
+  assert(memcached_is_udp(ptr->root) == false);
   assert_msg(ptr, "Programmer error, memcached_io_read() recieved an invalid memcached_server_write_instance_st"); // Programmer error
   char *buffer_ptr= static_cast<char *>(buffer);
 
@@ -439,7 +417,7 @@ memcached_return_t memcached_io_read(memcached_server_write_instance_st ptr,
       ssize_t data_read;
       do
       {
-        data_read= recv(ptr->fd, ptr->read_buffer, MEMCACHED_MAX_BUFFER, MSG_DONTWAIT);
+        data_read= ::recv(ptr->fd, ptr->read_buffer, MEMCACHED_MAX_BUFFER, MSG_DONTWAIT);
         if (data_read == SOCKET_ERROR)
         {
           switch (get_socket_errno())
@@ -475,7 +453,7 @@ memcached_return_t memcached_io_read(memcached_server_write_instance_st ptr,
           default:
             {
               memcached_quit_server(ptr, true);
-              *nread= -1;
+              nread= -1;
               return memcached_set_errno(*ptr, get_socket_errno(), MEMCACHED_AT);
             }
           }
@@ -493,8 +471,9 @@ memcached_return_t memcached_io_read(memcached_server_write_instance_st ptr,
           */
           WATCHPOINT_STRING("We had a zero length recv()");
           memcached_quit_server(ptr, true);
-          *nread= -1;
-          return memcached_set_error(*ptr, MEMCACHED_UNKNOWN_READ_FAILURE, MEMCACHED_AT);
+          nread= -1;
+          return memcached_set_error(*ptr, MEMCACHED_CONNECTION_FAILURE, MEMCACHED_AT, 
+                                     memcached_literal_param("::rec() returned zero, server has disconnected"));
         }
       } while (data_read <= 0);
 
@@ -526,7 +505,7 @@ memcached_return_t memcached_io_read(memcached_server_write_instance_st ptr,
     }
   }
 
-  *nread = (ssize_t)(buffer_ptr - (char*)buffer);
+  nread= ssize_t(buffer_ptr - (char*)buffer);
 
   return MEMCACHED_SUCCESS;
 }
@@ -534,6 +513,7 @@ memcached_return_t memcached_io_read(memcached_server_write_instance_st ptr,
 memcached_return_t memcached_io_slurp(memcached_server_write_instance_st ptr)
 {
   assert_msg(ptr, "Programmer error, invalid memcached_server_write_instance_st");
+  assert(memcached_is_udp(ptr->root) == false);
 
   if (ptr->fd == INVALID_SOCKET)
   {
@@ -591,6 +571,7 @@ static ssize_t _io_write(memcached_server_write_instance_st ptr,
                          const void *buffer, size_t length, bool with_flush)
 {
   WATCHPOINT_ASSERT(ptr->fd != INVALID_SOCKET);
+  assert(memcached_is_udp(ptr->root) == false);
 
   size_t original_length= length;
   const char *buffer_ptr= static_cast<const char *>(buffer);
@@ -660,21 +641,9 @@ ssize_t memcached_io_write(memcached_server_write_instance_st ptr,
   return _io_write(ptr, buffer, length, with_flush);
 }
 
-size_t io_vector_total_size(libmemcached_io_vector_st* vector, const size_t number_of)
-{
-  ssize_t total= 0;
-
-  for (size_t x= 0; x < number_of; x++)
-  {
-    total+= vector->length;
-  }
-
-  return total;
-}
-
 ssize_t memcached_io_writev(memcached_server_write_instance_st ptr,
-                            const struct libmemcached_io_vector_st *vector,
-                            size_t number_of, bool with_flush)
+                            libmemcached_io_vector_st vector[],
+                            const size_t number_of, const bool with_flush)
 {
   ssize_t total= 0;
 
@@ -821,14 +790,14 @@ memcached_return_t memcached_safe_read(memcached_server_write_instance_st ptr,
     ssize_t nread;
     memcached_return_t rc;
 
-    while (memcached_continue(rc= memcached_io_read(ptr, data + offset, size - offset, &nread))) { };
+    while (memcached_continue(rc= memcached_io_read(ptr, data + offset, size - offset, nread))) { };
 
     if (memcached_failed(rc))
     {
       return rc;
     }
 
-    offset+= (size_t) nread;
+    offset+= size_t(nread);
   }
 
   return MEMCACHED_SUCCESS;
@@ -852,7 +821,7 @@ memcached_return_t memcached_io_readline(memcached_server_write_instance_st ptr,
        * the logic.
      */
       ssize_t nread;
-      memcached_return_t rc= memcached_io_read(ptr, buffer_ptr, 1, &nread);
+      memcached_return_t rc= memcached_io_read(ptr, buffer_ptr, 1, nread);
       if (memcached_failed(rc) and rc == MEMCACHED_IN_PROGRESS)
       {
         memcached_quit_server(ptr, true);