Refactor for host_reset, updated test. TODO in code can be safetly ignored
authorBrian Aker <brian@tangent.org>
Mon, 5 Jan 2009 21:51:48 +0000 (13:51 -0800)
committerBrian Aker <brian@tangent.org>
Mon, 5 Jan 2009 21:51:48 +0000 (13:51 -0800)
under current code (since no malloc is required).

ChangeLog
libmemcached/memcached_server.c
tests/function.c
tests/output.res

index c61a7a2cd477a5e3f8c4f4ab2817d488a1d97466..8ff99b09c067536e2542ef487bdd794b2d975b90 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,6 @@
 0.26
   * Fix for decrement on hash key
+  * Fixed assert that was catching bad memset() call in host_reset()
 
 0.25 Fri Nov 28 09:59:35 PST 2008
   * Jenkins HASH added.
index 87f2ddc9c70fb9042d20795927d013ed65b3a070..fe132fe1ab0c29663c89edd23deb6d1b7703578d 100644 (file)
@@ -17,6 +17,7 @@ memcached_server_st *memcached_server_create(memcached_st *memc, memcached_serve
   }
   else
   {
+    ptr->is_allocated= MEMCACHED_USED;
     memset(ptr, 0, sizeof(memcached_server_st));
   }
   
@@ -34,7 +35,6 @@ memcached_server_st *memcached_server_create_with(memcached_st *memc, memcached_
   if (host == NULL)
     return NULL;
 
-  memset(host,  0, sizeof(memcached_server_st));
   strncpy(host->hostname, hostname, MEMCACHED_MAX_HOST_LENGTH - 1);
   host->root= memc ? memc : NULL;
   host->port= port;
@@ -51,8 +51,6 @@ memcached_server_st *memcached_server_create_with(memcached_st *memc, memcached_
 
 void memcached_server_free(memcached_server_st *ptr)
 {
-  WATCHPOINT_ASSERT(ptr->is_allocated != MEMCACHED_NOT_ALLOCATED);
-
   memcached_quit_server(ptr, 0);
 
   if (ptr->address_info)
@@ -68,8 +66,6 @@ void memcached_server_free(memcached_server_st *ptr)
     else
       free(ptr);
   }
-  else
-    ptr->is_allocated= MEMCACHED_USED;
 }
 
 /*
index e31aaf1f4f720558de429720b3586de649ac3f6a..b801b7c36a27757b5383c86e3d3980f12fd6f59d 100644 (file)
@@ -2126,6 +2126,28 @@ static test_return  user_supplied_bug17(memcached_st *memc)
     return 0;
 }
 
+/*
+  From Andrei on IRC
+*/
+
+test_return user_supplied_bug19(memcached_st *memc)
+{
+  memcached_st *m;
+  memcached_server_st *s;
+  memcached_return res;
+
+  (void)memc;
+
+  m= memcached_create(NULL);
+  memcached_server_add_with_weight(m, "localhost", 11311, 100);
+  memcached_server_add_with_weight(m, "localhost", 11312, 100);
+
+  s= memcached_server_by_key(m, "a", 1, &res);
+  memcached_server_free(s);
+
+  memcached_free(m);
+}
+
 #include "ketama_test_cases.h"
 test_return user_supplied_bug18(memcached_st *memc)
 {
@@ -3000,6 +3022,7 @@ test_st user_tests[] ={
   {"user_supplied_bug16", 1, user_supplied_bug16 },
   {"user_supplied_bug17", 1, user_supplied_bug17 },
 //  {"user_supplied_bug18", 1, user_supplied_bug18 },
+  {"user_supplied_bug19", 1, user_supplied_bug19 },
   {0, 0, 0}
 };
 
index b1cdac08a5dfafe497742e938ec258eafc26587a..0f4b3fc75e8ca16680b55ec3c2a3da4871f78a83 100644 (file)
@@ -566,13 +566,130 @@ Error 29 -> FETCH WAS NOT COMPLETED
 Error 30 -> A TIMEOUT OCCURRED
 Error 31 -> ACTION QUEUED
 Error 32 -> A BAD KEY WAS PROVIDED/CHARACTERS OUT OF RANGE
+Error 0 -> SUCCESS
+Error 1 -> FAILURE
+Error 2 -> HOSTNAME LOOKUP FAILURE
+Error 3 -> CONNECTION FAILURE
+Error 4 -> CONNECTION BIND FAILURE
+Error 5 -> WRITE FAILURE
+Error 6 -> READ FAILURE
+Error 7 -> UNKNOWN READ FAILURE
+Error 8 -> PROTOCOL ERROR
+Error 9 -> CLIENT ERROR
+Error 10 -> SERVER ERROR
+Error 11 -> CONNECTION SOCKET CREATE FAILURE
+Error 12 -> CONNECTION DATA EXISTS
+Error 13 -> CONNECTION DATA DOES NOT EXIST
+Error 14 -> NOT STORED
+Error 15 -> STORED
+Error 16 -> NOT FOUND
+Error 17 -> MEMORY ALLOCATION FAILURE
+Error 18 -> PARTIAL READ
+Error 19 -> SOME ERRORS WERE REPORTED
+Error 20 -> NO SERVERS DEFINED
+Error 21 -> SERVER END
+Error 22 -> SERVER DELETE
+Error 23 -> SERVER VALUE
+Error 24 -> STAT VALUE
+Error 25 -> SYSTEM ERROR
+Error 26 -> COULD NOT OPEN UNIX SOCKET
+Error 27 -> ACTION NOT SUPPORTED
+Error 28 -> A KEY LENGTH OF ZERO WAS PROVIDED
+Error 29 -> FETCH WAS NOT COMPLETED
+Error 30 -> A TIMEOUT OCCURRED
+Error 31 -> ACTION QUEUED
+Error 32 -> A BAD KEY WAS PROVIDED/CHARACTERS OUT OF RANGE
+Error 0 -> SUCCESS
+Error 1 -> FAILURE
+Error 2 -> HOSTNAME LOOKUP FAILURE
+Error 3 -> CONNECTION FAILURE
+Error 4 -> CONNECTION BIND FAILURE
+Error 5 -> WRITE FAILURE
+Error 6 -> READ FAILURE
+Error 7 -> UNKNOWN READ FAILURE
+Error 8 -> PROTOCOL ERROR
+Error 9 -> CLIENT ERROR
+Error 10 -> SERVER ERROR
+Error 11 -> CONNECTION SOCKET CREATE FAILURE
+Error 12 -> CONNECTION DATA EXISTS
+Error 13 -> CONNECTION DATA DOES NOT EXIST
+Error 14 -> NOT STORED
+Error 15 -> STORED
+Error 16 -> NOT FOUND
+Error 17 -> MEMORY ALLOCATION FAILURE
+Error 18 -> PARTIAL READ
+Error 19 -> SOME ERRORS WERE REPORTED
+Error 20 -> NO SERVERS DEFINED
+Error 21 -> SERVER END
+Error 22 -> SERVER DELETE
+Error 23 -> SERVER VALUE
+Error 24 -> STAT VALUE
+Error 25 -> SYSTEM ERROR
+Error 26 -> COULD NOT OPEN UNIX SOCKET
+Error 27 -> ACTION NOT SUPPORTED
+Error 28 -> A KEY LENGTH OF ZERO WAS PROVIDED
+Error 29 -> FETCH WAS NOT COMPLETED
+Error 30 -> A TIMEOUT OCCURRED
+Error 31 -> ACTION QUEUED
+Error 32 -> A BAD KEY WAS PROVIDED/CHARACTERS OUT OF RANGE
+ketama_weighted:localhost|11221|1|160
+ketama_weighted:localhost|11222|1|160
+ketama_weighted:localhost|11223|1|160
+ketama_weighted:localhost|11224|1|160
+ketama_weighted:localhost|11225|1|160
+ketama_weighted:localhost|11221|1|160
+ketama_weighted:localhost|11222|1|160
+ketama_weighted:localhost|11223|1|160
+ketama_weighted:localhost|11224|1|160
+ketama_weighted:localhost|11225|1|160
+ketama_weighted:localhost|11221|1|160
+ketama_weighted:localhost|11222|1|160
+ketama_weighted:localhost|11223|1|160
+ketama_weighted:localhost|11224|1|160
+ketama_weighted:localhost|11225|1|160
+ketama_weighted:localhost|11221|1|160
+ketama_weighted:localhost|11222|1|160
+ketama_weighted:localhost|11223|1|160
+ketama_weighted:localhost|11224|1|160
+ketama_weighted:localhost|11225|1|160
 
-server 0|localhost|11221 bytes: 2805141
+server 0|localhost|11221 bytes: 1106784
 
-server 1|localhost|11222 bytes: 2033190
+server 1|localhost|11222 bytes: 965601
 
-server 2|localhost|11223 bytes: 1961432
+server 2|localhost|11223 bytes: 1307502
 
-server 3|localhost|11224 bytes: 2202898
+server 3|localhost|11224 bytes: 1240596
 
-server 4|localhost|11225 bytes: 1715263
+server 4|localhost|11225 bytes: 1049517
+ketama_weighted:localhost|11221|1|160
+ketama_weighted:localhost|11222|1|160
+ketama_weighted:localhost|11223|1|160
+ketama_weighted:localhost|11224|1|160
+ketama_weighted:localhost|11225|1|160
+ketama_weighted:localhost|11221|1|160
+ketama_weighted:localhost|11222|1|160
+ketama_weighted:localhost|11223|1|160
+ketama_weighted:localhost|11224|1|160
+ketama_weighted:localhost|11225|1|160
+ketama_weighted:localhost|11221|1|160
+ketama_weighted:localhost|11222|1|160
+ketama_weighted:localhost|11223|1|160
+ketama_weighted:localhost|11224|1|160
+ketama_weighted:localhost|11225|1|160
+ketama_weighted:localhost|11221|1|160
+ketama_weighted:localhost|11222|1|160
+ketama_weighted:localhost|11223|1|160
+ketama_weighted:localhost|11224|1|160
+ketama_weighted:localhost|11225|1|160
+ketama_weighted:localhost|6666|1|160
+ketama_weighted:localhost|11221|1|160
+ketama_weighted:localhost|11222|1|160
+ketama_weighted:localhost|11223|1|160
+ketama_weighted:localhost|11224|1|160
+ketama_weighted:localhost|11225|1|160
+ketama_weighted:localhost|11221|1|160
+ketama_weighted:localhost|11222|1|160
+ketama_weighted:localhost|11223|1|160
+ketama_weighted:localhost|11224|1|160
+ketama_weighted:localhost|11225|1|160