2025-02-25 17:07:49 +01:00
|
|
|
// Flags: --expose-internals
|
2020-07-31 14:42:39 +02:00
|
|
|
'use strict';
|
|
|
|
const common = require('../common');
|
|
|
|
|
|
|
|
const net = require('net');
|
2025-02-25 17:07:49 +01:00
|
|
|
const { internalBinding } = require('internal/test/binding');
|
|
|
|
const { HTTPParser } = internalBinding('http_parser');
|
2020-07-31 14:42:39 +02:00
|
|
|
|
|
|
|
const server = net.createServer((socket) => {
|
|
|
|
socket.write('HTTP/1.1 200 OK\r\n');
|
|
|
|
socket.write('Transfer-Encoding: chunked\r\n\r\n');
|
|
|
|
setTimeout(() => {
|
|
|
|
socket.write('1\r\n');
|
|
|
|
socket.write('\n\r\n');
|
|
|
|
setTimeout(() => {
|
|
|
|
socket.write('1\r\n');
|
|
|
|
socket.write('\n\r\n');
|
|
|
|
setImmediate(() => {
|
|
|
|
socket.destroy();
|
|
|
|
server.close();
|
|
|
|
});
|
|
|
|
}, 500);
|
|
|
|
}, 500);
|
|
|
|
}).listen(0, () => {
|
|
|
|
const socket = net.connect(server.address().port);
|
|
|
|
const parser = new HTTPParser(HTTPParser.RESPONSE, false);
|
|
|
|
parser.initialize(
|
|
|
|
HTTPParser.RESPONSE,
|
|
|
|
{},
|
|
|
|
0,
|
2021-04-07 21:04:06 -07:00
|
|
|
0,
|
2020-07-31 14:42:39 +02:00
|
|
|
);
|
|
|
|
|
|
|
|
parser[HTTPParser.kOnTimeout] = common.mustNotCall();
|
|
|
|
|
|
|
|
parser[HTTPParser.kOnHeaders] = common.mustNotCall();
|
|
|
|
|
2020-08-03 12:52:08 +02:00
|
|
|
parser[HTTPParser.kOnExecute] = common.mustCallAtLeast(3);
|
2020-07-31 14:42:39 +02:00
|
|
|
|
|
|
|
parser[HTTPParser.kOnHeadersComplete] = common.mustCall();
|
|
|
|
|
|
|
|
parser[HTTPParser.kOnBody] = common.mustCall(2);
|
|
|
|
|
|
|
|
parser[HTTPParser.kOnMessageComplete] = common.mustNotCall();
|
|
|
|
|
|
|
|
parser.consume(socket._handle);
|
|
|
|
});
|