| 'use strict'; |
| const common = require('../common'); |
| const assert = require('assert'); |
| const { createServer } = require('http'); |
| const { connect } = require('net'); |
| |
| // Make sure that for HTTP keepalive requests, the .on('end') event is emitted |
| // on the incoming request object, and that the parser instance does not hold |
| // on to that request object afterwards. |
| |
| const server = createServer(common.mustCall((req, res) => { |
| req.on('end', common.mustCall(() => { |
| const parser = req.socket.parser; |
| assert.strictEqual(parser.incoming, req); |
| process.nextTick(() => { |
| assert.strictEqual(parser.incoming, null); |
| }); |
| })); |
| res.end('hello world'); |
| })); |
| |
| server.unref(); |
| |
| server.listen(0, common.mustCall(() => { |
| const client = connect(server.address().port); |
| |
| const req = [ |
| 'POST / HTTP/1.1', |
| `Host: localhost:${server.address().port}`, |
| 'Connection: keep-alive', |
| 'Content-Length: 11', |
| '', |
| 'hello world', |
| '', |
| ].join('\r\n'); |
| |
| client.end(req); |
| })); |