X-Git-Url: https://git.m6w6.name/?a=blobdiff_plain;f=libmemcached%2Fmemcached_parse.c;h=d3d364a0bd43cd7ac1c21091966def75520104c5;hb=1f1ea5fbd8e1376d953e31ae8e8ea804fb319183;hp=fc6a4cb1ecb19e08892afc84a024eac263118c4d;hpb=948eeb667c78f158f769de8cc418e44e81048dc2;p=awesomized%2Flibmemcached diff --git a/libmemcached/memcached_parse.c b/libmemcached/memcached_parse.c index fc6a4cb1..d3d364a0 100644 --- 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; + uint32_t weight; 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]; - char *ptr; + char *ptr, *ptr2; port= 0; + weight= 0; if (string) { @@ -52,9 +54,18 @@ memcached_server_st *memcached_servers_parse(char *server_strings) ptr++; 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, port, &rc); + servers= memcached_server_list_append_with_weight(servers, buffer, port, weight, &rc); if (isspace(*begin_ptr)) begin_ptr++;