mirror of
https://github.com/nodejs/node.git
synced 2026-10-28 10:15:07 +08:00
http2: support passing options of http2.connect to net.connect
PR-URL: https://github.com/nodejs/node/pull/29816 Fixes: https://github.com/nodejs/node/issues/29811 Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Trivikram Kamat <trivikr.dev@gmail.com> Reviewed-By: Jiawen Geng <technicalcute@gmail.com>
This commit is contained in:
1 parent
80f2b67367
commit
95266db2bc
3 files changed
+44
-2
No files matched your search
@@ -2898,7 +2898,7 @@ function connect(authority, options, listener) {
|
||||
} else {
|
||||
switch (protocol) {
|
||||
case 'http:':
|
||||
socket = net.connect(options.port || port, options.host || host);
|
||||
socket = net.connect({ port, host, ...options });
|
||||
break;
|
||||
case 'https:':
|
||||
socket = tls.connect(port, host, initializeTLSOptions(options, host));
|
||||
|
||||
@@ -11,7 +11,7 @@ const net = require('net');
|
||||
|
||||
const connect = net.connect;
|
||||
net.connect = common.mustCall((...args) => {
|
||||
assert.strictEqual(args[0], '80');
|
||||
assert.strictEqual(args[0].port, '80');
|
||||
return connect(...args);
|
||||
});
|
||||
|
||||
|
||||
@@ -0,0 +1,42 @@
|
||||
// Flags: --expose-internals
|
||||
'use strict';
|
||||
const common = require('../common');
|
||||
if (!common.hasCrypto)
|
||||
common.skip('missing crypto');
|
||||
|
||||
if (!common.hasMultiLocalhost())
|
||||
common.skip('platform-specific test.');
|
||||
|
||||
const http2 = require('http2');
|
||||
const assert = require('assert');
|
||||
|
||||
const server = http2.createServer((req, res) => {
|
||||
console.log(`Connect from: ${req.connection.remoteAddress}`);
|
||||
assert.strictEqual(req.connection.remoteAddress, '127.0.0.2');
|
||||
|
||||
req.on('end', common.mustCall(() => {
|
||||
res.writeHead(200, { 'Content-Type': 'text/plain' });
|
||||
res.end(`You are from: ${req.connection.remoteAddress}`);
|
||||
}));
|
||||
req.resume();
|
||||
});
|
||||
|
||||
server.listen(0, '127.0.0.1', common.mustCall(() => {
|
||||
const options = { localAddress: '127.0.0.2' };
|
||||
|
||||
const client = http2.connect(
|
||||
'http://localhost:' + server.address().port,
|
||||
options
|
||||
);
|
||||
const req = client.request({
|
||||
':path': '/'
|
||||
});
|
||||
req.on('data', () => req.resume());
|
||||
req.on('end', common.mustCall(function() {
|
||||
client.close();
|
||||
req.close();
|
||||
server.close();
|
||||
process.exit();
|
||||
}));
|
||||
req.end();
|
||||
}));
|
||||
Reference in new issue
Block a user