%PDF- <> %âãÏÓ endobj 2 0 obj <> endobj 3 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 28 0 R 29 0 R] /MediaBox[ 0 0 595.5 842.25] /Contents 4 0 R/Group<>/Tabs/S>> endobj ºaâÚÎΞ-ÌE1ÍØÄ÷{òò2ÿ ÛÖ^ÔÀá TÎ{¦?§®¥kuµùÕ5sLOšuY>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<> endobj 2 0 obj<>endobj 2 0 obj<>es 3 0 R>> endobj 2 0 obj<> ox[ 0.000000 0.000000 609.600000 935.600000]/Fi endobj 3 0 obj<> endobj 7 1 obj<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/Subtype/Form>> stream
'use strict'; const common = require('../common'); const http = require('http'); const net = require('net'); const tests = []; function test(fn) { if (!tests.length) { process.nextTick(run); } tests.push(fn); } function run() { const fn = tests.shift(); if (fn) fn(run); } function done(server, socket, cb) { socket.destroy(); server.close(cb); } function serverTest(withPipeline, cb) { let gotAll = false; let timedout = false; const server = http.createServer(common.mustCall((req, res) => { if (withPipeline) res.end(); if (req.url === '/3') { gotAll = true; if (timedout) done(server, req.socket, cb); } }, 3)); server.setTimeout(500, common.mustCallAtLeast((socket) => { // End this test and call `run()` for the next test (if any). timedout = true; if (gotAll) done(server, socket, cb); })); server.keepAliveTimeout = 50; server.listen(0, common.mustCall(() => { const options = { port: server.address().port, allowHalfOpen: true }; const c = net.connect(options, () => { c.write('GET /1 HTTP/1.1\r\nHost: localhost\r\n\r\n'); c.write('GET /2 HTTP/1.1\r\nHost: localhost\r\n\r\n'); c.write('GET /3 HTTP/1.1\r\nHost: localhost\r\n\r\n'); }); })); } test(function serverEndKeepAliveTimeoutWithPipeline(cb) { serverTest(true, cb); }); test(function serverNoEndKeepAliveTimeoutWithPipeline(cb) { serverTest(false, cb); });