1'use strict'; 2 3const common = require('../common'); 4const assert = require('assert'); 5const { createServer } = require('http'); 6const { connect } = require('net'); 7 8// This test validates that the requestTimeoout 9// is disabled after the connection is upgraded. 10let sendDelayedRequestHeaders; 11const server = createServer(common.mustNotCall()); 12server.on('connection', common.mustCall(() => { 13 assert.strictEqual(typeof sendDelayedRequestHeaders, 'function'); 14 sendDelayedRequestHeaders(); 15})); 16 17// 0 seconds is the default 18assert.strictEqual(server.requestTimeout, 0); 19const requestTimeout = common.platformTimeout(1000); 20server.requestTimeout = requestTimeout; 21assert.strictEqual(server.requestTimeout, requestTimeout); 22 23server.on('upgrade', common.mustCall((req, socket, head) => { 24 socket.write('HTTP/1.1 101 Web Socket Protocol Handshake\r\n'); 25 socket.write('Upgrade: WebSocket\r\n'); 26 socket.write('Connection: Upgrade\r\n\r\n'); 27 socket.pipe(socket); 28})); 29 30server.listen(0, common.mustCall(() => { 31 const client = connect(server.address().port); 32 let response = ''; 33 34 client.on('data', common.mustCallAtLeast((chunk) => { 35 response += chunk.toString('utf-8'); 36 }, 1)); 37 38 client.on('end', common.mustCall(() => { 39 assert.strictEqual( 40 response, 41 'HTTP/1.1 101 Web Socket Protocol Handshake\r\n' + 42 'Upgrade: WebSocket\r\n' + 43 'Connection: Upgrade\r\n\r\n' + 44 '12345678901234567890' 45 ); 46 47 server.close(); 48 })); 49 50 client.resume(); 51 client.write('GET / HTTP/1.1\r\n'); 52 client.write('Upgrade: WebSocket\r\n'); 53 client.write('Connection: Upgrade\r\n\r\n'); 54 55 sendDelayedRequestHeaders = common.mustCall(() => { 56 setTimeout(() => { 57 client.write('12345678901234567890'); 58 client.end(); 59 }, common.platformTimeout(2000)).unref(); 60 }); 61})); 62