mirror of
https://github.com/nodejs/node.git
synced 2024-11-28 14:33:11 +01:00
30fb4a015d
PR-URL: https://github.com/nodejs/node/pull/35086 Reviewed-By: Ruy Adorno <ruyadorno@github.com> Reviewed-By: Rich Trott <rtrott@gmail.com>
74 lines
2.0 KiB
JavaScript
74 lines
2.0 KiB
JavaScript
'use strict';
|
|
const common = require('../common');
|
|
|
|
if (!common.hasCrypto)
|
|
common.skip('missing crypto');
|
|
|
|
const http2 = require('http2');
|
|
const net = require('net');
|
|
|
|
const {
|
|
HTTP2_HEADER_PATH,
|
|
} = http2.constants;
|
|
|
|
// Create a normal session, as a control case
|
|
function normalSession(cb) {
|
|
http2.connect('https://google.com', (clientSession) => {
|
|
let error = null;
|
|
const req = clientSession.request({ [HTTP2_HEADER_PATH]: '/' });
|
|
req.on('error', (err) => {
|
|
error = err;
|
|
});
|
|
req.on('response', (_headers) => {
|
|
req.on('data', (_chunk) => { });
|
|
req.on('end', () => {
|
|
clientSession.close();
|
|
return cb(error);
|
|
});
|
|
});
|
|
});
|
|
}
|
|
normalSession(common.mustSucceed());
|
|
|
|
// Create a session using a socket that has not yet finished connecting
|
|
function socketNotFinished(done) {
|
|
const socket2 = net.connect(443, 'google.com');
|
|
http2.connect('https://google.com', { socket2 }, (clientSession) => {
|
|
let error = null;
|
|
const req = clientSession.request({ [HTTP2_HEADER_PATH]: '/' });
|
|
req.on('error', (err) => {
|
|
error = err;
|
|
});
|
|
req.on('response', (_headers) => {
|
|
req.on('data', (_chunk) => { });
|
|
req.on('end', () => {
|
|
clientSession.close();
|
|
socket2.destroy();
|
|
return done(error);
|
|
});
|
|
});
|
|
});
|
|
}
|
|
socketNotFinished(common.mustSucceed());
|
|
|
|
// Create a session using a socket that has finished connecting
|
|
function socketFinished(done) {
|
|
const socket = net.connect(443, 'google.com', () => {
|
|
http2.connect('https://google.com', { socket }, (clientSession) => {
|
|
let error = null;
|
|
const req = clientSession.request({ [HTTP2_HEADER_PATH]: '/' });
|
|
req.on('error', (err) => {
|
|
error = err;
|
|
});
|
|
req.on('response', (_headers) => {
|
|
req.on('data', (_chunk) => { });
|
|
req.on('end', () => {
|
|
clientSession.close();
|
|
return done(error);
|
|
});
|
|
});
|
|
});
|
|
});
|
|
}
|
|
socketFinished(common.mustSucceed());
|