Fixed semi colon bug in memcp.
[awesomized/libmemcached] / libmemcached / memcached_get.c
index 354f7bb89cc8b93d1ae3fa77416481e849ea1b25..f6c81338a1bf817f376c789fb179756a1cafa658 100644 (file)
@@ -4,7 +4,8 @@
 /* 
   What happens if no servers exist?
 */
-char *memcached_get(memcached_st *ptr, char *key, size_t key_length, 
+char *memcached_get(memcached_st *ptr, const char *key, 
+                    size_t key_length, 
                     size_t *value_length, 
                     uint32_t *flags,
                     memcached_return *error)
@@ -14,8 +15,9 @@ char *memcached_get(memcached_st *ptr, char *key, size_t key_length,
 }
 
 char *memcached_get_by_key(memcached_st *ptr, 
-                           char *master_key, size_t master_key_length, 
-                           char *key, size_t key_length, 
+                           const char *master_key, 
+                           size_t master_key_length, 
+                           const char *key, size_t key_length,
                            size_t *value_length, 
                            uint32_t *flags,
                            memcached_return *error)
@@ -29,7 +31,7 @@ char *memcached_get_by_key(memcached_st *ptr,
   *error= memcached_mget_by_key(ptr, 
                                 master_key, 
                                 master_key_length, 
-                                &key, &key_length, 1);
+                                (char **)&key, &key_length, 1);
 
   value= memcached_fetch(ptr, NULL, NULL, 
                          value_length, flags, error);
@@ -39,7 +41,7 @@ char *memcached_get_by_key(memcached_st *ptr,
 
   if (value == NULL)
   {
-    if (ptr->get_key_failure)
+    if (ptr->get_key_failure && *error == MEMCACHED_NOTFOUND)
     {
       memcached_return rc;
 
@@ -95,8 +97,10 @@ memcached_return memcached_mget(memcached_st *ptr,
 }
 
 memcached_return memcached_mget_by_key(memcached_st *ptr, 
-                                       char *master_key, size_t master_key_length,
-                                       char **keys, size_t *key_length, 
+                                       const char *master_key, 
+                                       size_t master_key_length,
+                                       char **keys, 
+                                       size_t *key_length, 
                                        unsigned int number_of_keys)
 {
   unsigned int x;
@@ -176,6 +180,17 @@ memcached_return memcached_mget_by_key(memcached_st *ptr,
       WATCHPOINT_ASSERT(ptr->hosts[server_key].cursor_active == 1);
     }
 
+    /* Only called when we have a prefix key */
+    if (ptr->prefix_key[0] != 0)
+    {
+      if ((memcached_io_write(&ptr->hosts[server_key], ptr->prefix_key, ptr->prefix_key_length, 0)) == -1)
+      {
+        memcached_server_response_reset(&ptr->hosts[server_key]);
+        rc= MEMCACHED_SOME_ERRORS;
+        continue;
+      }
+    }
+
     if ((memcached_io_write(&ptr->hosts[server_key], keys[x], key_length[x], 0)) == -1)
     {
       memcached_server_response_reset(&ptr->hosts[server_key]);