projects
/
m6w6
/
libmemcached
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
|
github
raw
|
inline
| side by side
Fix for bug in behavior.
[m6w6/libmemcached]
/
lib
/
memcached_stats.c
diff --git
a/lib/memcached_stats.c
b/lib/memcached_stats.c
index 644ca70d41d24f722731cab263a73482f6c7202e..f71deb46c4d713a3acc7ee297c0d8edfc0a7f6e4 100644
(file)
--- a/
lib/memcached_stats.c
+++ b/
lib/memcached_stats.c
@@
-222,19
+222,19
@@
static memcached_return memcached_stats_fetch(memcached_st *ptr,
unsigned int server_key)
{
memcached_return rc;
unsigned int server_key)
{
memcached_return rc;
- char buffer[
HUGE_STRING_LEN
];
+ char buffer[
MEMCACHED_DEFAULT_COMMAND_SIZE
];
size_t send_length, sent_length;
size_t send_length, sent_length;
- rc= memcached_connect(ptr);
+ rc= memcached_connect(ptr
, server_key
);
if (rc != MEMCACHED_SUCCESS)
return rc;
if (args)
if (rc != MEMCACHED_SUCCESS)
return rc;
if (args)
- send_length= snprintf(buffer,
HUGE_STRING_LEN
,
+ send_length= snprintf(buffer,
MEMCACHED_DEFAULT_COMMAND_SIZE
,
"stats %s\r\n", args);
else
"stats %s\r\n", args);
else
- send_length= snprintf(buffer,
HUGE_STRING_LEN
,
+ send_length= snprintf(buffer,
MEMCACHED_DEFAULT_COMMAND_SIZE
,
"stats\r\n");
if (send_length >= MEMCACHED_DEFAULT_COMMAND_SIZE)
"stats\r\n");
if (send_length >= MEMCACHED_DEFAULT_COMMAND_SIZE)
@@
-245,19
+245,17
@@
static memcached_return memcached_stats_fetch(memcached_st *ptr,
if (sent_length == -1 || sent_length != send_length)
return MEMCACHED_WRITE_FAILURE;
if (sent_length == -1 || sent_length != send_length)
return MEMCACHED_WRITE_FAILURE;
- rc= memcached_response(ptr, buffer, HUGE_STRING_LEN, 0);
-
- if (rc == MEMCACHED_SUCCESS)
+ while (1)
{
{
- char *string_ptr, *end_ptr;
- char *key, *value;
+ rc= memcached_response(ptr, buffer, MEMCACHED_DEFAULT_COMMAND_SIZE, server_key);
- string_ptr= buffer;
- while (1)
+ if (rc == MEMCACHED_STAT)
{
{
- if (memcmp(string_ptr, "STAT ", 5))
- break;
- string_ptr+= 5;
+ char *string_ptr, *end_ptr;
+ char *key, *value;
+
+ string_ptr= buffer;
+ string_ptr+= 5; /* Move past STAT */
for (end_ptr= string_ptr; *end_ptr != ' '; end_ptr++);
key= string_ptr;
key[(size_t)(end_ptr-string_ptr)]= 0;
for (end_ptr= string_ptr; *end_ptr != ' '; end_ptr++);
key= string_ptr;
key[(size_t)(end_ptr-string_ptr)]= 0;
@@
-269,9
+267,14
@@
static memcached_return memcached_stats_fetch(memcached_st *ptr,
string_ptr= end_ptr + 2;
set_data(stat, key, value);
}
string_ptr= end_ptr + 2;
set_data(stat, key, value);
}
+ else
+ break;
}
}
- return rc;
+ if (rc == MEMCACHED_END)
+ return MEMCACHED_SUCCESS;
+ else
+ return rc;
}
memcached_stat_st *memcached_stat(memcached_st *ptr, char *args, memcached_return *error)
}
memcached_stat_st *memcached_stat(memcached_st *ptr, char *args, memcached_return *error)
@@
-280,13
+283,6
@@
memcached_stat_st *memcached_stat(memcached_st *ptr, char *args, memcached_retur
memcached_return rc;
memcached_stat_st *stats;
memcached_return rc;
memcached_stat_st *stats;
- rc= memcached_connect(ptr);
- if (rc != MEMCACHED_SUCCESS)
- {
- *error= rc;
- return NULL;
- }
-
stats= (memcached_stat_st *)malloc(sizeof(memcached_st)*(ptr->number_of_hosts+1));
if (!stats)
{
stats= (memcached_stat_st *)malloc(sizeof(memcached_st)*(ptr->number_of_hosts+1));
if (!stats)
{
@@
-296,10
+292,12
@@
memcached_stat_st *memcached_stat(memcached_st *ptr, char *args, memcached_retur
}
memset(stats, 0, sizeof(memcached_st)*(ptr->number_of_hosts+1));
}
memset(stats, 0, sizeof(memcached_st)*(ptr->number_of_hosts+1));
+ rc= MEMCACHED_SUCCESS;
for (x= 0; x < ptr->number_of_hosts; x++)
{
for (x= 0; x < ptr->number_of_hosts; x++)
{
- rc= memcached_stats_fetch(ptr, stats+x, args, x);
- if (rc != MEMCACHED_SUCCESS)
+ memcached_return temp_return;
+ temp_return= memcached_stats_fetch(ptr, stats+x, args, x);
+ if (temp_return != MEMCACHED_SUCCESS)
rc= MEMCACHED_SOME_ERRORS;
}
rc= MEMCACHED_SOME_ERRORS;
}
@@
-317,11
+315,6
@@
memcached_return memcached_stat_servername(memcached_stat_st *stat, char *args,
memcached_server_add(&memc, hostname, port);
memcached_server_add(&memc, hostname, port);
- rc= memcached_connect(&memc);
-
- if (rc != MEMCACHED_SUCCESS)
- return rc;
-
rc= memcached_stats_fetch(&memc, stat, args, 0);
memcached_free(&memc);
rc= memcached_stats_fetch(&memc, stat, args, 0);
memcached_free(&memc);