diff options
author | James M Snell <jasnell@gmail.com> | 2018-08-23 10:38:31 -0700 |
---|---|---|
committer | James M Snell <jasnell@gmail.com> | 2018-08-27 02:17:02 -0700 |
commit | dd03706d62937d759bbd358fd122e46c2c769cb8 (patch) | |
tree | 831683532cc6e85b23ed2f9ed66aa1ead43dfdfe /test | |
parent | 2eef0778344b00609760cf7fcc12508e10c27516 (diff) | |
download | android-node-v8-dd03706d62937d759bbd358fd122e46c2c769cb8.tar.gz android-node-v8-dd03706d62937d759bbd358fd122e46c2c769cb8.tar.bz2 android-node-v8-dd03706d62937d759bbd358fd122e46c2c769cb8.zip |
http2: throw better error when accessing unbound socket proxy
Fixes: https://github.com/nodejs/node/issues/22268
PR-URL: https://github.com/nodejs/node/pull/22486
Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de>
Reviewed-By: Rich Trott <rtrott@gmail.com>
Reviewed-By: Trivikram Kamat <trivikr.dev@gmail.com>
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Diffstat (limited to 'test')
-rw-r--r-- | test/parallel/test-http2-unbound-socket-proxy.js | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/test/parallel/test-http2-unbound-socket-proxy.js b/test/parallel/test-http2-unbound-socket-proxy.js new file mode 100644 index 0000000000..44f113bac9 --- /dev/null +++ b/test/parallel/test-http2-unbound-socket-proxy.js @@ -0,0 +1,69 @@ +'use strict'; + +const common = require('../common'); +if (!common.hasCrypto) + common.skip('missing crypto'); +const http2 = require('http2'); +const net = require('net'); + +const server = http2.createServer(); +server.on('stream', common.mustCall((stream) => { + stream.respond(); + stream.end('ok'); +})); + +server.listen(0, common.mustCall(() => { + const client = http2.connect(`http://localhost:${server.address().port}`); + const socket = client.socket; + const req = client.request(); + req.resume(); + req.on('close', common.mustCall(() => { + client.close(); + server.close(); + + // Tests to make sure accessing the socket proxy fails with an + // informative error. + setImmediate(common.mustCall(() => { + common.expectsError(() => { + socket.example; + }, { + code: 'ERR_HTTP2_SOCKET_UNBOUND' + }); + common.expectsError(() => { + socket.example = 1; + }, { + code: 'ERR_HTTP2_SOCKET_UNBOUND' + }); + common.expectsError(() => { + socket instanceof net.Socket; + }, { + code: 'ERR_HTTP2_SOCKET_UNBOUND' + }); + common.expectsError(() => { + socket.ref(); + }, { + code: 'ERR_HTTP2_SOCKET_UNBOUND' + }); + common.expectsError(() => { + socket.unref(); + }, { + code: 'ERR_HTTP2_SOCKET_UNBOUND' + }); + common.expectsError(() => { + socket.setEncoding(); + }, { + code: 'ERR_HTTP2_SOCKET_UNBOUND' + }); + common.expectsError(() => { + socket.setKeepAlive(); + }, { + code: 'ERR_HTTP2_SOCKET_UNBOUND' + }); + common.expectsError(() => { + socket.setNoDelay(); + }, { + code: 'ERR_HTTP2_SOCKET_UNBOUND' + }); + })); + })); +})); |