Bad data for threads (Toru patch)
[m6w6/libmemcached] / libmemcached / memcached_delete.c
index 60e3bed4406e3ce89c1b6c64868559af8f77b7b8..a105f552e096a29be1075e2cfb3287ffe500faba 100644 (file)
@@ -1,6 +1,6 @@
 #include "common.h"
 
-memcached_return memcached_delete(memcached_st *ptr, char *key, size_t key_length,
+memcached_return memcached_delete(memcached_st *ptr, const char *key, size_t key_length,
                                   time_t expiration)
 {
   return memcached_delete_by_key(ptr, key, key_length,
@@ -8,8 +8,8 @@ memcached_return memcached_delete(memcached_st *ptr, char *key, size_t key_lengt
 }
 
 memcached_return memcached_delete_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,
                                          time_t expiration)
 {
   char to_write;
@@ -30,11 +30,15 @@ memcached_return memcached_delete_by_key(memcached_st *ptr,
 
   if (expiration)
     send_length= snprintf(buffer, MEMCACHED_DEFAULT_COMMAND_SIZE, 
-                          "delete %.*s %llu\r\n", (int)key_length, key, 
+                          "delete %s%.*s %llu\r\n", 
+                          ptr->prefix_key,
+                          (int)key_length, key, 
                           (unsigned long long)expiration);
   else
     send_length= snprintf(buffer, MEMCACHED_DEFAULT_COMMAND_SIZE, 
-                          "delete %.*s\r\n", (int)key_length, key);
+                          "delete %s%.*s\r\n", 
+                          ptr->prefix_key,
+                          (int)key_length, key);
 
   if (send_length >= MEMCACHED_DEFAULT_COMMAND_SIZE)
   {
@@ -59,6 +63,9 @@ memcached_return memcached_delete_by_key(memcached_st *ptr,
       rc= MEMCACHED_SUCCESS;
   }
 
+  if (rc == MEMCACHED_SUCCESS && ptr->delete_trigger)
+    ptr->delete_trigger(ptr, key, key_length);
+
 error:
   LIBMEMCACHED_MEMCACHED_DELETE_END();
   return rc;