Possible fix for problem where servaddr may not always be correctly inited.
authorBrian Aker <brian@tangent.org>
Fri, 16 Nov 2007 21:40:36 +0000 (13:40 -0800)
committerBrian Aker <brian@tangent.org>
Fri, 16 Nov 2007 21:40:36 +0000 (13:40 -0800)
include/memcached.h
lib/memcached_auto.c
lib/memcached_connect.c
tests/function.c

index f9ae2706ad78373666d74ca3fbbe07ad78ccaec7..316f1f3fc2afdda24b831fac6105483fd353b5dc 100644 (file)
@@ -110,6 +110,7 @@ struct memcached_server_st {
   char read_buffer[MEMCACHED_MAX_BUFFER];
   size_t read_buffer_length;
   char *read_ptr;
+  memcached_allocated sockaddr_inited;
   struct sockaddr_in servAddr;
   memcached_connection type;
   uint8_t major_version;
@@ -189,11 +190,11 @@ memcached_return memcached_delete(memcached_st *ptr, char *key, size_t key_lengt
                                   time_t expiration);
 memcached_return memcached_increment(memcached_st *ptr, 
                                      char *key, size_t key_length,
-                                     unsigned int offset,
+                                     uint32_t offset,
                                      uint64_t *value);
 memcached_return memcached_decrement(memcached_st *ptr, 
                                      char *key, size_t key_length,
-                                     unsigned int offset,
+                                     uint32_t offset,
                                      uint64_t *value);
 void memcached_stat_free(memcached_st *, memcached_stat_st *);
 memcached_stat_st *memcached_stat(memcached_st *ptr, char *args, memcached_return *error);
index f2ed0b8ff2dc924290987db2af2fb85e70306b1f..b9b74628810a9f7e96dc8df5d61f6290ceb4856d 100644 (file)
@@ -60,7 +60,7 @@ static memcached_return memcached_auto(memcached_st *ptr,
 
 memcached_return memcached_increment(memcached_st *ptr, 
                                      char *key, size_t key_length,
-                                     unsigned int offset,
+                                     uint32_t offset,
                                      uint64_t *value)
 {
   memcached_return rc;
@@ -74,7 +74,7 @@ memcached_return memcached_increment(memcached_st *ptr,
 
 memcached_return memcached_decrement(memcached_st *ptr, 
                                      char *key, size_t key_length,
-                                     unsigned int offset,
+                                     uint32_t offset,
                                      uint64_t *value)
 {
   memcached_return rc;
index cbf57fdc6607e19a1b5bcf24188d8b0bafb8dcf5..0c256b71e07c6b9853798135fa6f4688ecb42fcf 100644 (file)
@@ -72,13 +72,15 @@ static memcached_return udp_connect(memcached_st *ptr, unsigned int server_key)
     /* Old connection junk still is in the structure */
     WATCHPOINT_ASSERT(ptr->hosts[server_key].stack_responses == 0);
 
-    if (ptr->hosts[server_key].servAddr.sin_family == 0)
+    if (ptr->hosts[server_key].sockaddr_inited == MEMCACHED_NOT_ALLOCATED)
     {
       memcached_return rc;
 
       rc= set_hostinfo(&ptr->hosts[server_key]);
       if (rc != MEMCACHED_SUCCESS)
         return rc;
+
+      ptr->hosts[server_key].sockaddr_inited= MEMCACHED_ALLOCATED;
     }
 
     /* Create the socket */
index 837f14fff19bf38956857b8e00ab9ce2ed56524f..68eddbd738816fb8ecdc6feed165f35d2ed6ce31 100644 (file)
@@ -186,7 +186,7 @@ uint8_t append_binary_test(memcached_st *memc)
   assert((value_length == (sizeof(unsigned int) * x)));
   assert(rc == MEMCACHED_SUCCESS);
 
-  store_ptr= store_list;
+  store_ptr= (unsigned int *)value;
   x= 0;
   while (*store_ptr)
   {