Fix for source specfile (aka source RPM).
authorBrian Aker <brian@tangent.org>
Wed, 28 Nov 2007 01:20:20 +0000 (17:20 -0800)
committerBrian Aker <brian@tangent.org>
Wed, 28 Nov 2007 01:20:20 +0000 (17:20 -0800)
Modified hostname to be static allocation (saves the system call at the cost
of 64 bytes of memory in servers_st structure).

docs/memcached_servers.pod
include/memcached.h
lib/memcached_hosts.c
support/libmemcached.spec.in

index fa0881accf18d0ddbc4872d9d337042122dbcbf8..2fbd1a6632ce7a2e119d623056a9cdd449fb4be7 100755 (executable)
@@ -49,7 +49,8 @@ allowed, so duplication is not checked.
 
 memcached_server_add_unix_socket() pushes a single UNIX socket into the 
 C<memcached_st> structure. This UNIX socket will be placed at the end. 
-Duplicate servers are allowed, so duplication is not checked.
+Duplicate servers are allowed, so duplication is not checked. The length
+of the filename must be one character less then MEMCACHED_MAX_HOST_LENGTH.
 
 memcached_server_push() pushes an array of C<memcached_server_st> into
 the C<memcached_st> structure. These servers will be placed at the
index 4e60cca0fa2a6475133b4a5f56ea973a4685dfbd..3d1bfcd873180e64ecbec4d8cd79e819655aa065 100644 (file)
@@ -32,6 +32,7 @@ typedef struct memcached_server_st memcached_server_st;
 #define HUGE_STRING_LEN 8196
 #define MEMCACHED_MAX_KEY 251 /* We add one to have it null terminated */
 #define MEMCACHED_MAX_BUFFER HUGE_STRING_LEN
+#define MEMCACHED_MAX_HOST_LENGTH 64
 
 typedef enum {
   MEMCACHED_SUCCESS,
@@ -104,7 +105,7 @@ typedef enum {
 } memcached_allocated;
 
 struct memcached_server_st {
-  char *hostname;
+  char hostname[MEMCACHED_MAX_HOST_LENGTH];
   unsigned int port;
   int fd;
   unsigned int stack_responses;
index fac037070c8a6e2b7da59a3efe74a8668eb93d02..4b871d6ba1136e55b040fbfeef37f9736c8d54ca 100644 (file)
@@ -10,7 +10,7 @@ static void host_reset(memcached_server_st *host, char *hostname, unsigned int p
                        memcached_connection type)
 {
   memset(host,  0, sizeof(memcached_server_st));
-  host->hostname= strdup(hostname);
+  memcpy(host->hostname, hostname, strlen(hostname));
   host->port= port;
   host->fd= -1;
   host->type= type;
@@ -41,7 +41,7 @@ memcached_return memcached_server_push(memcached_st *ptr, memcached_server_st *l
                                    
   for (x= 0; x < count; x++)
   {
-    WATCHPOINT_ASSERT(list[x].hostname);
+    WATCHPOINT_ASSERT(list[x].hostname[0] == 0);
     host_reset(&ptr->hosts[ptr->number_of_hosts], list[x].hostname, 
                list[x].port, list[x].type);
     ptr->number_of_hosts++;
@@ -160,8 +160,5 @@ void memcached_server_list_free(memcached_server_st *ptr)
   if (ptr == NULL)
     return;
 
-  for (x= 0; x < ptr[0].count; x++)
-    free(ptr[x].hostname);
-
   free(ptr);
 }
index 86220b54d4bce3151563ddef6113e08519fb47eb..2ed34137628066a71694c27492aeae270cad7a24 100644 (file)
@@ -4,6 +4,7 @@ Version: @VERSION@
 Release: 1
 License: BSD
 Group: System Environment/Libraries
+BuildRequires: gcc-c++
 URL: http://tangent.org/552/libmemcached.html
 
 Packager: Jeff Fisher <guppy@techmonkeys.org>