@@ -289,7 +289,7 @@ function setServers(servers) {
|
289 | 289 | // servers cares won't have any servers available for resolution |
290 | 290 | const orig = this._handle.getServers(); |
291 | 291 | const newSet = []; |
292 | | -const IPv6RE = /\[(.*)\]/; |
| 292 | +const IPv6RE = /^\[([^[\]]*)\]/; |
293 | 293 | const addrSplitRE = /(^.+?)(?::(\d+))?$/; |
294 | 294 | |
295 | 295 | servers.forEach((serv) => { |
@@ -309,11 +309,16 @@ function setServers(servers) {
|
309 | 309 | } |
310 | 310 | } |
311 | 311 | |
312 | | -const [, s, p] = serv.match(addrSplitRE); |
313 | | -ipVersion = isIP(s); |
| 312 | +// addr::port |
| 313 | +const addrSplitMatch = serv.match(addrSplitRE); |
| 314 | +if (addrSplitMatch) { |
| 315 | +const hostIP = addrSplitMatch[1]; |
| 316 | +const port = addrSplitMatch[2] || IANA_DNS_PORT; |
314 | 317 | |
315 | | -if (ipVersion !== 0) { |
316 | | -return newSet.push([ipVersion, s, parseInt(p)]); |
| 318 | +ipVersion = isIP(hostIP); |
| 319 | +if (ipVersion !== 0) { |
| 320 | +return newSet.push([ipVersion, hostIP, parseInt(port)]); |
| 321 | +} |
317 | 322 | } |
318 | 323 | |
319 | 324 | throw new ERR_INVALID_IP_ADDRESS(serv); |
|