Bug fix for memcached_cas() operator.
author <brian@gir-2.local> <>
Fri, 15 Feb 2008 07:03:41 +0000 (12:33 +0530)
committer <brian@gir-2.local> <>
Fri, 15 Feb 2008 07:03:41 +0000 (12:33 +0530)
ChangeLog
lib/memcached_response.c
lib/memcached_storage.c
tests/function.c

index 35f91ed757748df92cc6511b54b799419109b88c..21fb30c64500f6207acd32117bb5a05e46412b77 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -10,6 +10,7 @@
   * Added MEMCACHED_BAD_KEY_PROVIDED error for auto, set, and get operations.
     MEMCACHED_BEHAVIOR_VERIFY_KEY was added to enable this feature.
   * More error messages on command line tools.
+  * Fixed bugs in memcached_cas() operator.
   
 0.15 Tue Jan 29 14:55:44 PST 2008
   * More work on the C++ API.
index 33dc0b1e5bfd41d9c28bb41d061028ab313fa619..6f9e7c3341caa1be24830b6ec622ecae6ce7c779 100644 (file)
@@ -145,6 +145,11 @@ memcached_return memcached_response(memcached_server_st *ptr,
         memcached_io_reset(ptr);
         return MEMCACHED_PROTOCOL_ERROR;
       }
+      else if (buffer[1] == 'X')
+      {
+        memcached_io_reset(ptr);
+        return MEMCACHED_DATA_EXISTS;
+      }
       else
       {
         memcached_io_reset(ptr);
index 443389e029a583f03418a73f35695a39bef77f4c..6d115913ebd0d213784c9cf108c23b3e6f6aace3 100644 (file)
@@ -206,7 +206,7 @@ memcached_return memcached_cas(memcached_st *ptr,
   memcached_return rc;
   rc= memcached_send(ptr, key, key_length, 
                      key, key_length, value, value_length,
-                     expiration, flags, cas, APPEND_OP);
+                     expiration, flags, cas, CAS_OP);
   return rc;
 }
 
@@ -297,6 +297,6 @@ memcached_return memcached_cas_by_key(memcached_st *ptr,
   memcached_return rc;
   rc= memcached_send(ptr, key, key_length, 
                      key, key_length, value, value_length,
-                     expiration, flags, cas, APPEND_OP);
+                     expiration, flags, cas, CAS_OP);
   return rc;
 }
index 7c61db786eaf584ddeffe022833187ceccdc2080..2a17a9ccfd4e3ad72eb7e9e75024300fa0982d94 100644 (file)
@@ -332,6 +332,19 @@ uint8_t cas_test(memcached_st *memc)
   assert(strlen("we the people") == value_length);
   assert(rc == MEMCACHED_SUCCESS);
 
+  rc= memcached_cas(memc, key, key_length,
+                    "change the value", strlen("change the value"), 
+                    0, 0, memcached_result_cas(results));
+
+  assert(rc == MEMCACHED_SUCCESS);
+
+  rc= memcached_cas(memc, key, key_length,
+                    "change the value", strlen("change the value"), 
+                    0, 0, 23);
+
+  assert(rc == MEMCACHED_DATA_EXISTS);
+
+
   memcached_result_free(&results_obj);
 
   return 0;