Skip to content
This repository was archived by the owner on May 14, 2024. It is now read-only.

Commit 188870d

Browse files
Max Leiterjsumners
andauthored
Progress on supporting IPv6 (#805)
* Progress on supporting IPv6 * Apply suggestions from code review Co-authored-by: James Sumners <[email protected]> * tests: add IPv6 URL format test to server.test.js Co-authored-by: James Sumners <[email protected]>
1 parent 9143456 commit 188870d

File tree

2 files changed

+23
-4
lines changed

2 files changed

+23
-4
lines changed

lib/server.js

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -508,7 +508,15 @@ Object.defineProperties(Server.prototype, {
508508
} else {
509509
str = 'ldap://'
510510
}
511-
str += this.host + ':' + this.port
511+
512+
let host = this.host
513+
// Node 18 switched family from returning a string to returning a number
514+
// https://nodejs.org/api/net.html#serveraddress
515+
if (addr.family === 'IPv6' || addr.family === 6) {
516+
host = '[' + this.host + ']'
517+
}
518+
519+
str += host + ':' + this.port
512520
return str
513521
},
514522
configurable: false

test/server.test.js

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ tap.test('basic create', function (t) {
2424
tap.test('connection count', function (t) {
2525
const server = ldap.createServer()
2626
t.ok(server)
27-
server.listen(0, 'localhost', function () {
27+
server.listen(0, '127.0.0.1', function () {
2828
t.ok(true, 'server listening on ' + server.url)
2929

3030
server.getConnections(function (err, count) {
@@ -62,6 +62,17 @@ tap.test('properties', function (t) {
6262
})
6363
})
6464

65+
tap.test('IPv6 URL is formatted correctly', function (t) {
66+
const server = ldap.createServer()
67+
t.equal(server.url, null, 'url empty before bind')
68+
server.listen(0, '::1', function () {
69+
t.ok(server.url)
70+
t.equal(server.url, 'ldap://[::1]:' + server.port)
71+
72+
server.close(() => t.end())
73+
})
74+
})
75+
6576
tap.test('listen on unix/named socket', function (t) {
6677
const server = ldap.createServer()
6778
server.listen(t.context.sock, function () {
@@ -437,7 +448,7 @@ tap.test('multithreading support via external server', function (t) {
437448
config: serverOptions
438449
}
439450
t.ok(server)
440-
fauxServer.listen(5555, 'localhost', function () {
451+
fauxServer.listen(5555, '127.0.0.1', function () {
441452
t.ok(true, 'server listening on ' + server.url)
442453

443454
t.ok(fauxServer)
@@ -459,7 +470,7 @@ tap.test('multithreading support via hook', function (t) {
459470
const server = ldap.createServer(serverOptions)
460471
const fauxServer = ldap.createServer(serverOptions)
461472
t.ok(server)
462-
fauxServer.listen(0, 'localhost', function () {
473+
fauxServer.listen(0, '127.0.0.1', function () {
463474
t.ok(true, 'server listening on ' + server.url)
464475

465476
t.ok(fauxServer)

0 commit comments

Comments
 (0)