diff options
author | James M Snell <jasnell@gmail.com> | 2018-10-05 15:09:07 -0700 |
---|---|---|
committer | James M Snell <jasnell@gmail.com> | 2018-10-08 08:41:35 -0700 |
commit | 0ad8c7319d6034fff0175bdf61ba8970db06a8ba (patch) | |
tree | 3e42a84182f295ed552870f184fbbf64f4018912 /test/parallel/test-http2-connect-method-extended-cant-turn-off.js | |
parent | 8290015d0a2f1a5d5947c31d6187b865fbe2ac9f (diff) | |
download | android-node-v8-0ad8c7319d6034fff0175bdf61ba8970db06a8ba.tar.gz android-node-v8-0ad8c7319d6034fff0175bdf61ba8970db06a8ba.tar.bz2 android-node-v8-0ad8c7319d6034fff0175bdf61ba8970db06a8ba.zip |
http2: add RFC 8441 extended connect protocol support
PR-URL: https://github.com/nodejs/node/pull/23284
Reviewed-By: Refael Ackermann <refack@gmail.com>
Reviewed-By: Gus Caplan <me@gus.host>
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Trivikram Kamat <trivikr.dev@gmail.com>
Diffstat (limited to 'test/parallel/test-http2-connect-method-extended-cant-turn-off.js')
-rw-r--r-- | test/parallel/test-http2-connect-method-extended-cant-turn-off.js | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/test/parallel/test-http2-connect-method-extended-cant-turn-off.js b/test/parallel/test-http2-connect-method-extended-cant-turn-off.js new file mode 100644 index 0000000000..f4d033efe6 --- /dev/null +++ b/test/parallel/test-http2-connect-method-extended-cant-turn-off.js @@ -0,0 +1,30 @@ +'use strict'; + +const common = require('../common'); +if (!common.hasCrypto) + common.skip('missing crypto'); +const assert = require('assert'); +const http2 = require('http2'); + +const settings = { enableConnectProtocol: true }; +const server = http2.createServer({ settings }); +server.on('stream', common.mustNotCall()); +server.on('session', common.mustCall((session) => { + // This will force the connection to close because once extended connect + // is on, it cannot be turned off. The server is behaving badly. + session.settings({ enableConnectProtocol: false }); +})); + +server.listen(0, common.mustCall(() => { + const client = http2.connect(`http://localhost:${server.address().port}`); + client.on('remoteSettings', common.mustCall((settings) => { + assert(settings.enableConnectProtocol); + const req = client.request({ + ':method': 'CONNECT', + ':protocol': 'foo' + }); + req.on('error', common.mustCall(() => { + server.close(); + })); + })); +})); |