Added memcached_generate_hash() and more tests! :)
[awesomized/libmemcached] / libmemcached / memcached_get.c
index 4d5fe7ca2d78a05330ac8c4993ba6ee9d400f32f..05b317a6268b79d19b5a711d49dfb05cf4dc3cb1 100644 (file)
@@ -27,7 +27,7 @@ char *memcached_get_by_key(memcached_st *ptr,
   uint32_t dummy_flags;
   memcached_return dummy_error;
 
-  if (ptr->flags & MEM_USE_UDP)
+  unlikely (ptr->flags & MEM_USE_UDP)
   {
     *error= MEMCACHED_NOT_SUPPORTED;
     return NULL;
@@ -125,10 +125,10 @@ memcached_return memcached_mget_by_key(memcached_st *ptr,
   memcached_return rc= MEMCACHED_NOTFOUND;
   char *get_command= "get ";
   uint8_t get_command_length= 4;
-  unsigned int master_server_key; /* 0 is a valid server id! */
+  unsigned int master_server_key= (unsigned int)-1; /* 0 is a valid server id! */
   bool is_master_key_set= false;
 
-   if (ptr->flags & MEM_USE_UDP)
+   unlikely (ptr->flags & MEM_USE_UDP)
     return MEMCACHED_NOT_SUPPORTED;
 
   LIBMEMCACHED_MEMCACHED_MGET_START();
@@ -311,14 +311,16 @@ static memcached_return binary_mget_by_key(memcached_st *ptr,
     if ((memcached_io_write(&ptr->hosts[server_key], request.bytes,
                             sizeof(request.bytes), 0) == -1) ||
         (memcached_io_write(&ptr->hosts[server_key], keys[x], 
-                            key_length[x], 
-                            flush || (x > 0 && x == ptr->io_key_prefetch)) == -1)) 
+                            key_length[x], flush) == -1)) 
     {
       memcached_server_response_reset(&ptr->hosts[server_key]);
       rc= MEMCACHED_SOME_ERRORS;
       continue;
     }
     memcached_server_response_increment(&ptr->hosts[server_key]);    
+    if ((x > 0 && x == ptr->io_key_prefetch) &&
+        memcached_flush_buffers(ptr) != MEMCACHED_SUCCESS)
+      rc= MEMCACHED_SOME_ERRORS;
   }
 
   if (number_of_keys > 1)