parse: fix warning
[m6w6/libmemcached] / src / libmemcached / parse.cc
index 12431222e3dfea0c72215484d1ebb28af13d7815..d9d81db0978eae166909c7f738b508ccf96c173d 100644 (file)
@@ -30,7 +30,7 @@ memcached_server_list_st memcached_servers_parse(const char *server_strings) {
        begin_ptr != end_ptr; string = (char *) strchr(begin_ptr, ','))
   {
     char buffer[HUGE_STRING_LEN];
-    char *ptr, *ptr2;
+    char *ptr, *ptr2 = NULL;
     uint32_t weight = 0;
 
     if (string) {
@@ -44,8 +44,17 @@ memcached_server_list_st memcached_servers_parse(const char *server_strings) {
       begin_ptr = end_ptr;
     }
 
-    ptr = strchr(buffer, ':');
-
+    ptr = strchr(buffer, '[');
+    if (ptr) {
+      ptr2 = strchr(ptr+1, ']');
+    }
+    if (ptr && ptr2) {
+      // [IPv6]:port
+      ptr = strchr(ptr2+1, ':');
+    } else {
+      // IPv4:port or name:port
+      ptr = strchr(buffer, ':');
+    }
     in_port_t port = 0;
     if (ptr) {
       ptr[0] = 0;