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) {
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;