- if ((sep = strchr(alloc, ':')) == 0)
- die(1, "missing port number in address `%s'", host);
- host = alloc; *sep = 0; svc = sep + 1;
+ if (alloc[0] != '[') {
+ if ((sep = strchr(alloc, ':')) == 0)
+ die(1, "missing port number in address `%s'", host);
+ host = alloc; *sep = 0; svc = sep + 1;
+ } else {
+ if ((sep = strchr(alloc, ']')) == 0 || sep[1] != ':')
+ die(1, "bad syntax in address `%s:'", host);
+ host = alloc + 1; *sep = 0; svc = sep + 2;
+ }