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 server returns 408 9// after server.requestTimeout if the client 10// pauses before start sending the request. 11let sendDelayedRequestHeaders; 12const server = createServer(common.mustNotCall()); 13server.on('connection', common.mustCall(() => { 14 assert.strictEqual(typeof sendDelayedRequestHeaders, 'function'); 15 sendDelayedRequestHeaders(); 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.listen(0, common.mustCall(() => { 24 const client = connect(server.address().port); 25 let response = ''; 26 27 client.on('data', common.mustCall((chunk) => { 28 response += chunk.toString('utf-8'); 29 })); 30 31 const errOrEnd = common.mustCall(function(err) { 32 console.log(err); 33 assert.strictEqual( 34 response, 35 'HTTP/1.1 408 Request Timeout\r\nConnection: close\r\n\r\n' 36 ); 37 server.close(); 38 }); 39 40 client.on('end', errOrEnd); 41 client.on('error', errOrEnd); 42 43 client.resume(); 44 45 sendDelayedRequestHeaders = common.mustCall(() => { 46 setTimeout(() => { 47 client.write('POST / HTTP/1.1\r\n'); 48 client.write('Content-Length: 20\r\n'); 49 client.write('Connection: close\r\n\r\n'); 50 client.write('12345678901234567890\r\n\r\n'); 51 }, common.platformTimeout(2000)).unref(); 52 }); 53})); 54