You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

30 lines
747 B

'use strict';
const common = require('../common');
if (!common.hasCrypto)
common.skip('missing crypto');
const tls = require('tls');
const http = require('http');
// Tests that, after the HTTP parser stopped owning a socket that emits an
// 'upgrade' event, another C++ stream can start owning it (e.g. a TLSSocket).
const server = http.createServer(common.mustNotCall());
server.on('upgrade', common.mustCall((request, socket, head) => {
// This should not crash.
new tls.TLSSocket(socket);
server.close();
socket.destroy();
}));
server.listen(0, common.mustCall(() => {
http.get({
port: server.address().port,
headers: {
'Connection': 'Upgrade',
'Upgrade': 'websocket'
}
}).on('error', () => {});
}));