Skip to content

Commit 02cad6a

Browse files
authoredMar 10, 2025··
Merge pull request #1829 from perrin4869/fix/http2/ipv6-addresses
fix(https2): ipv6 addresses url
2 parents 150eb6c + e29fd25 commit 02cad6a

File tree

3 files changed

+19
-15
lines changed

3 files changed

+19
-15
lines changed
 

‎.dist.eslintrc

+1
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
"no-undef": "off",
1818
"no-unused-vars": "off",
1919
"no-useless-escape": "off",
20+
"no-obj-calls": "off",
2021
"no-cond-assign": "off",
2122
"no-redeclare": "off",
2223
"node/no-exports-assign": "off",

‎src/node/http2wrapper.js

+7-2
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,10 @@ function setProtocol(protocol) {
2121
};
2222
}
2323

24+
function normalizeIpv6Host(host) {
25+
return net.isIP(host) === 6 ? `[${host}]` : host;
26+
}
27+
2428
class Request extends Stream {
2529
constructor(protocol, options) {
2630
super();
@@ -48,11 +52,12 @@ class Request extends Stream {
4852

4953
this._headers = {};
5054

55+
const normalizedHost = normalizeIpv6Host(host);
5156
const session = http2.connect(
52-
`${protocol}//${host}:${port}`,
57+
`${protocol}//${normalizedHost}:${port}`,
5358
sessionOptions
5459
);
55-
this.setHeader('host', `${host}:${port}`);
60+
this.setHeader('host', `${normalizedHost}:${port}`);
5661

5762
session.on('error', (error) => this.emit('error', error));
5863

‎test/node/basic.js

+11-13
Original file line numberDiff line numberDiff line change
@@ -134,23 +134,21 @@ describe('[node] request', () => {
134134
});
135135
});
136136

137-
if (doesntWorkInHttp2) {
138-
describe('ipv6 address', () => {
139-
it('should successfully query an ipv6 address', (done) => {
140-
request.get(`http://[::]:${process.env.ZUUL_PORT}/url?a=(b%29`).end((error, res) => {
141-
assert.equal('/url?a=(b%29', res.text);
142-
done();
143-
});
137+
describe('ipv6 address', () => {
138+
it('should successfully query an ipv6 address', (done) => {
139+
request.get(`http://[::]:${process.env.ZUUL_PORT}/url?a=(b%29`).end((error, res) => {
140+
assert.equal('/url?a=(b%29', res.text);
141+
done();
144142
});
143+
});
145144

146-
it('should successfully query an ipv6 address', (done) => {
147-
request.get(`http://[::1]:${process.env.ZUUL_PORT}/url?a=(b%29`).end((error, res) => {
148-
assert.equal('/url?a=(b%29', res.text);
149-
done();
150-
});
145+
it('should successfully query an ipv6 address', (done) => {
146+
request.get(`http://[::1]:${process.env.ZUUL_PORT}/url?a=(b%29`).end((error, res) => {
147+
assert.equal('/url?a=(b%29', res.text);
148+
done();
151149
});
152150
});
153-
}
151+
});
154152

155153
describe('.buffer()', () => {
156154
it('should enable buffering', (done) => {

0 commit comments

Comments
 (0)