Fix for poorly terminated hostname.
authorBrian Aker <brian@tangent.org>
Tue, 20 Nov 2007 01:42:26 +0000 (17:42 -0800)
committerBrian Aker <brian@tangent.org>
Tue, 20 Nov 2007 01:42:26 +0000 (17:42 -0800)
Fix in enum return type (misspelling).

ChangeLog
include/memcached.h
lib/memcached_connect.c
lib/memcached_hosts.c
lib/memcached_strerror.c

index b880e29d863a33cc60b1c280e475df338d5577b6..022ee4ee8da8015a18a23117045e90b14136c94a 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -6,6 +6,8 @@
     runtime.
   * Added the utility memerror to create human readable error strings
     from memcached errors (aka convert ints to strings)
+  * Fixed type in MEMCACHED_HOST_LOOKUP_FAILURE
+  * Fixed bug where hostname might not be null terminated
 
 0.9 Thu Nov 15 07:44:00 PST 2007
   * fix for when no servers are definied.
index 33fa053dc402489228d719e2a2085f123440b019..e64bfb5d6f78c8b69a0277cfe8151eb4de63a6c5 100644 (file)
@@ -36,7 +36,7 @@ typedef struct memcached_server_st memcached_server_st;
 typedef enum {
   MEMCACHED_SUCCESS,
   MEMCACHED_FAILURE,
-  MEMCACHED_HOST_LOCKUP_FAILURE,
+  MEMCACHED_HOST_LOOKUP_FAILURE,
   MEMCACHED_CONNECTION_FAILURE,
   MEMCACHED_CONNECTION_BIND_FAILURE,
   MEMCACHED_WRITE_FAILURE,
index fffd2b88f34211101156545416cd35ef209997f1..f323e79f778422b377b7a14fb79ecb0c3d1d93c2 100644 (file)
@@ -13,7 +13,9 @@ static memcached_return set_hostinfo(memcached_server_st *server)
 
   if ((h= gethostbyname(server->hostname)) == NULL)
   {
-    return MEMCACHED_HOST_LOCKUP_FAILURE;
+    WATCHPOINT_STRING(server->hostname);
+    WATCHPOINT_STRING(hstrerror(h_errno));
+    return MEMCACHED_HOST_LOOKUP_FAILURE;
   }
 
   server->servAddr.sin_family= h->h_addrtype;
@@ -210,6 +212,9 @@ memcached_return memcached_connect(memcached_st *ptr, unsigned int server_key)
       rc= unix_socket_connect(ptr, server_key);
       break;
     }
+
+    if (rc != MEMCACHED_SUCCESS)
+      WATCHPOINT_ERROR(rc);
   }
   else
   {
@@ -240,7 +245,10 @@ memcached_return memcached_connect(memcached_st *ptr, unsigned int server_key)
       rc= MEMCACHED_SUCCESS;
 
       if (possible_rc != MEMCACHED_SUCCESS)
+      {
+        WATCHPOINT_ERROR(possible_rc);
         rc= MEMCACHED_SOME_ERRORS;
+      }
     }
   }
   LIBMEMCACHED_MEMCACHED_CONNECT_END();
index d5ec56064534af7b1ff02de9797138eb59b3015a..9e9c667317b6d80c1dfc02ed107dd21ffa96e640 100644 (file)
@@ -125,6 +125,7 @@ static memcached_return server_add(memcached_st *ptr, char *hostname,
     return MEMCACHED_MEMORY_ALLOCATION_FAILURE;
 
   memcpy(new_hostname, hostname, strlen(hostname));
+  new_hostname[strlen(hostname)]= 0;
   host_reset(&ptr->hosts[ptr->number_of_hosts], new_hostname, port, type);
   ptr->number_of_hosts++;
 
index d2da69638174a5c015a3ab067d83fa1d988f5253..65e837e87bb272ce1fb53cf855ff61b748ff3552 100644 (file)
@@ -8,7 +8,7 @@ char *memcached_strerror(memcached_st *ptr, memcached_return rc)
     return "SUCCESS";
   case MEMCACHED_FAILURE:
     return "FAILURE";
-  case MEMCACHED_HOST_LOCKUP_FAILURE:
+  case MEMCACHED_HOST_LOOKUP_FAILURE:
     return "HOSTNAME LOOKUP FAILURE";
   case MEMCACHED_CONNECTION_FAILURE:
     return "CONNECTION FAILURE";