Fixed bug found by Evan Weaver where increment was not returning propper error
author <brian@gir.tangent.org> <>
Mon, 21 Jan 2008 05:00:46 +0000 (21:00 -0800)
committer <brian@gir.tangent.org> <>
Mon, 21 Jan 2008 05:00:46 +0000 (21:00 -0800)
on not found.

Commented out Patrick's missing pod file.

ChangeLog
docs/Makefile.am
lib/memcached.c
lib/memcached_auto.c
lib/memcached_io.c
tests/function.c

index 3bebceb16d33c98347d410e3b17a0581714f85d6..cffb7a4ae49e7a5a9e9057df972be18e265f8d11 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,4 +1,6 @@
 
+  * For for bug found by Evan Weaver where increment() was not returning
+    propper error of value was not found.
   * Fix for bad null pointer on flag by Toru Maesaka.
   * Refactor of all IO to just pass in the active server
   * Problem configuring (PKG_CHECK_MODULES) fixed by removal of "rpath" in 
index 6eaf8eeb5c97f632de11378435bb304218385c87..e4cb08bf79f978b03b0c94d0ee38c1d3da81dd2f 100644 (file)
@@ -22,7 +22,7 @@ EXTRA_DIST = libmemcached.pod\
        memcp.pod\\r
        memcached_delete.pod\\r
        memcached_set.pod\\r
-  memcached_version.pod\\r
+       memcached_version.pod\\r
        memflush.pod\r
 \r
 man_MANS = libmemcached.3\\r
@@ -79,7 +79,7 @@ man_MANS = libmemcached.3\
        memcached_strerror.3\\r
        memcached_quit.3\\r
        memcached_verbosity.3\\r
-       memcached_lib_version.3\\r
+#      memcached_lib_version.3\\r
        memcached_version.3\r
 \r
 libmemcached.3: libmemcached.pod \r
@@ -259,8 +259,8 @@ memcached_result_cas.3: memcached_result_st.pod
 memcached_version.3: memcached_version.pod\r
        pod2man -c "libmemcached" -r "" -s 3 memcached_version.pod > memcached_version.3\r
 \r
-memcached_lib_version.3: memcached_version.pod\r
-       pod2man -c "libmemcached" -r "" -s 3 memcached_version.pod  > memcached_lib_version.3\r
+#memcached_lib_version.3: memcached_version.pod\r
+#      pod2man -c "libmemcached" -r "" -s 3 memcached_version.pod  > memcached_lib_version.3\r
 \r
 memcp.1: memcp.pod\r
        pod2man -c "libmemcached" -r "" -s 1 memcp.pod > memcp.1\r
index 5d89e721faf27b5d49e2c4c3a82dba9738c32000..31c12ab3158bc52af7665376171816157f27e3c5 100644 (file)
@@ -60,7 +60,6 @@ memcached_st *memcached_clone(memcached_st *clone, memcached_st *ptr)
   memcached_return rc= MEMCACHED_SUCCESS;
   memcached_st *new_clone;
 
-  WATCHPOINT;
   if (ptr == NULL)
     return memcached_create(clone);
 
@@ -70,7 +69,6 @@ memcached_st *memcached_clone(memcached_st *clone, memcached_st *ptr)
     return NULL;
   }
   
-  WATCHPOINT;
   new_clone= memcached_create(clone);
   
   if (new_clone == NULL)
index f21f8f2f260aa4bccc436c129d2c5633d58e7019..4af85e97bd385d56951aed7b192022482f23119b 100644 (file)
@@ -35,16 +35,16 @@ static memcached_return memcached_auto(memcached_st *ptr,
   /* 
     So why recheck responce? Because the protocol is brain dead :)
     The number returned might end up equaling one of the string 
-    values. Less chance of a mistake with memcmp() so we will 
+    values. Less chance of a mistake with strncmp() so we will 
     use it. We still called memcached_response() though since it
     worked its magic for non-blocking IO.
   */
-  if (!memcmp(buffer, "ERROR\r\n", MEMCACHED_DEFAULT_COMMAND_SIZE))
+  if (!strncmp(buffer, "ERROR\r\n", 7))
   {
     *value= 0;
     rc= MEMCACHED_PROTOCOL_ERROR;
   }
-  else if (!memcmp(buffer, "NOT_FOUND\r\n", MEMCACHED_DEFAULT_COMMAND_SIZE))
+  else if (!strncmp(buffer, "NOT_FOUND\r\n", 11))
   {
     *value= 0;
     rc= MEMCACHED_NOTFOUND;
index 1ef7a4654db24a4152d086588b0cbeb032bdd10a..be186c4b0985d0ddbd74d935dab8d1f70993f267 100644 (file)
@@ -234,7 +234,6 @@ static ssize_t io_flush(memcached_server_st *ptr,
       if ((ssize_t)(sent_length= write(ptr->fd, local_write_ptr, 
                                        write_length)) == -1)
       {
-        WATCHPOINT_STRING("Error in write occurred");
         switch (errno)
         {
         case ENOBUFS:
index 51b4c74afa83f3f4dc7a624a6413933cc1961cb4..77a397817935edf5486407de6e4a9643a49ce92d 100644 (file)
@@ -889,11 +889,14 @@ uint8_t get_stats_keys(memcached_st *memc)
  return 0;
 }
 
-uint8_t version_string_test(void)
+uint8_t version_string_test(memcached_st *memc)
 {
   const char *version_string;
+
   version_string= memcached_lib_version();
+
   assert(!strcmp(version_string, LIBMEMCACHED_VERSION_STRING));
+
   return 0;
 }
 
@@ -1599,6 +1602,43 @@ uint8_t user_supplied_bug11(memcached_st *memc)
   return 0;
 }
 
+/*
+  Bug found where incr was not returning MEMCACHED_NOTFOUND when object did not exist.
+*/
+uint8_t user_supplied_bug12(memcached_st *memc)
+{
+  memcached_return rc;
+  uint32_t flags;
+  size_t value_length;
+  char *value;
+  uint64_t number_value;
+
+  value= memcached_get(memc, "autoincrement", strlen("autoincrement"),
+                        &value_length, &flags, &rc);           
+  assert(value == NULL);
+  assert(rc == MEMCACHED_NOTFOUND);
+
+  rc= memcached_increment(memc, "autoincrement", strlen("autoincrement"),
+                          1, &number_value);
+
+  assert(value == NULL);
+  assert(rc == MEMCACHED_NOTFOUND);
+
+  rc= memcached_set(memc, "autoincrement", strlen("autoincrement"), "1", 1, 0, 0);
+
+  value= memcached_get(memc, "autoincrement", strlen("autoincrement"),
+                        &value_length, &flags, &rc);           
+  assert(value);
+  assert(rc == MEMCACHED_SUCCESS);
+
+  rc= memcached_increment(memc, "autoincrement", strlen("autoincrement"),
+                          1, &number_value);
+  assert(number_value == 2);
+  assert(rc == MEMCACHED_SUCCESS);
+
+  return 0;
+}
+
 uint8_t result_static(memcached_st *memc)
 {
   memcached_result_st result;
@@ -2228,6 +2268,7 @@ test_st user_tests[] ={
   {"user_supplied_bug9", 1, user_supplied_bug9 },
   {"user_supplied_bug10", 1, user_supplied_bug10 },
   {"user_supplied_bug11", 1, user_supplied_bug11 },
+  {"user_supplied_bug12", 1, user_supplied_bug12 },
   {0, 0, 0}
 };