projects
/
m6w6
/
libmemcached
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
|
github
raw
|
inline
| side by side
Fix to make sure we do not copy an element on top of itself.
[m6w6/libmemcached]
/
libmemcached
/
memcached_parse.c
diff --git
a/libmemcached/memcached_parse.c
b/libmemcached/memcached_parse.c
index 366e77b55e6667b506baf4ff6bab6f72e9155e44..d3d364a0bd43cd7ac1c21091966def75520104c5 100644
(file)
--- a/
libmemcached/memcached_parse.c
+++ b/
libmemcached/memcached_parse.c
@@
-12,6
+12,7
@@
memcached_server_st *memcached_servers_parse(char *server_strings)
{
char *string;
unsigned int port;
{
char *string;
unsigned int port;
+ uint32_t weight;
char *begin_ptr;
char *end_ptr;
memcached_server_st *servers= NULL;
char *begin_ptr;
char *end_ptr;
memcached_server_st *servers= NULL;
@@
-26,8
+27,9
@@
memcached_server_st *memcached_servers_parse(char *server_strings)
string= index(begin_ptr, ','))
{
char buffer[HUGE_STRING_LEN];
string= index(begin_ptr, ','))
{
char buffer[HUGE_STRING_LEN];
- char *ptr;
+ char *ptr
, *ptr2
;
port= 0;
port= 0;
+ weight= 0;
if (string)
{
if (string)
{
@@
-51,10
+53,19
@@
memcached_server_st *memcached_servers_parse(char *server_strings)
ptr++;
ptr++;
- port= strtol(ptr, (char **)NULL, 10);
+ port= strtoul(ptr, (char **)NULL, 10);
+
+ ptr2= index(ptr, ' ');
+ if (! ptr2)
+ ptr2= index(ptr, ':');
+ if (ptr2)
+ {
+ ptr2++;
+ weight = strtoul(ptr2, (char **)NULL, 10);
+ }
}
}
- servers= memcached_server_list_append
(servers, buffer, por
t, &rc);
+ servers= memcached_server_list_append
_with_weight(servers, buffer, port, weigh
t, &rc);
if (isspace(*begin_ptr))
begin_ptr++;
if (isspace(*begin_ptr))
begin_ptr++;