Rollup from build trunk.
[m6w6/libmemcached] / libmemcached / storage.cc
index 0ce4ea61a3f939b7aadfc93a10122cfac16e7b17..e5f67dbcd2e50b7f07118aaa4db10dad3f877bec 100644 (file)
@@ -290,20 +290,22 @@ static memcached_return_t memcached_send_ascii(memcached_st *ptr,
 
   /* Send command header */
   memcached_return_t rc=  memcached_vdo(instance, vector, 12, flush);
-  if (rc == MEMCACHED_SUCCESS)
+
+  // If we should not reply, return with MEMCACHED_SUCCESS, unless error
+  if (reply == false)
   {
-    if (flush == false)
-    {
-      return MEMCACHED_BUFFERED;
-    }
+    return memcached_success(rc) ? MEMCACHED_SUCCESS : rc; 
+  }
 
-    if (reply == false)
-    {
-      return MEMCACHED_SUCCESS;
-    }
+  if (flush == false)
+  {
+    return memcached_success(rc) ? MEMCACHED_BUFFERED : rc; 
+  }
 
+  if (rc == MEMCACHED_SUCCESS)
+  {
     char buffer[MEMCACHED_DEFAULT_COMMAND_SIZE];
-    rc= memcached_response(instance, buffer, MEMCACHED_DEFAULT_COMMAND_SIZE, NULL);
+    rc= memcached_response(instance, buffer, sizeof(buffer), NULL);
 
     if (rc == MEMCACHED_STORED)
     {
@@ -340,16 +342,11 @@ static inline memcached_return_t memcached_send(memcached_st *ptr,
     return rc;
   }
 
-  if (memcached_failed(rc= memcached_validate_key_length(key_length, memcached_is_binary(ptr))))
+  if (memcached_failed(rc= memcached_key_test(*ptr, (const char **)&key, &key_length, 1)))
   {
     return rc;
   }
 
-  if (memcached_failed(memcached_key_test(*ptr, (const char **)&key, &key_length, 1)))
-  {
-    return MEMCACHED_BAD_KEY_PROVIDED;
-  }
-
   uint32_t server_key= memcached_generate_hash_with_redistribution(ptr, group_key, group_key_length);
   memcached_server_write_instance_st instance= memcached_server_instance_fetch(ptr, server_key);