aboutsummaryrefslogtreecommitdiff
path: root/test/parallel/test-http2-connect-method-extended-cant-turn-off.js
diff options
context:
space:
mode:
authorJames M Snell <jasnell@gmail.com>2018-10-05 15:09:07 -0700
committerJames M Snell <jasnell@gmail.com>2018-10-08 08:41:35 -0700
commit0ad8c7319d6034fff0175bdf61ba8970db06a8ba (patch)
tree3e42a84182f295ed552870f184fbbf64f4018912 /test/parallel/test-http2-connect-method-extended-cant-turn-off.js
parent8290015d0a2f1a5d5947c31d6187b865fbe2ac9f (diff)
downloadandroid-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.js30
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();
+ }));
+ }));
+}));