From 95266db2bc4d1cf1ab7d63aeed1a728124ead298 Mon Sep 17 00:00:00 2001 From: ZYSzys Date: Thu, 3 Oct 2019 01:19:05 +0800 Subject: 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 Reviewed-By: James M Snell Reviewed-By: Colin Ihrig Reviewed-By: Trivikram Kamat Reviewed-By: Jiawen Geng --- test/parallel/test-http2-client-port-80.js | 2 +- test/parallel/test-http2-connect-options.js | 42 +++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+), 1 deletion(-) create mode 100644 test/parallel/test-http2-connect-options.js (limited to 'test') diff --git a/test/parallel/test-http2-client-port-80.js b/test/parallel/test-http2-client-port-80.js index fc82e231f6..a286dbf6a7 100644 --- a/test/parallel/test-http2-client-port-80.js +++ b/test/parallel/test-http2-client-port-80.js @@ -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); }); diff --git a/test/parallel/test-http2-connect-options.js b/test/parallel/test-http2-connect-options.js new file mode 100644 index 0000000000..1a7987621a --- /dev/null +++ b/test/parallel/test-http2-connect-options.js @@ -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(); +})); -- cgit v1.2.3