HTTP Parser issues with newline `\n`
The following issue was found while working against a CouchDB changes stream which uses a newline \n as a form of a heartbeat on a long polling connection.
OS: MacOS, Node 14.6
Will invoke kOnTimeout after kOnHeadersComplete. Also will stop invoking kOnExecute but will keep invoking kOnBody.
Refs: nodejs/undici#268
Refs: nodejs/undici#269
const net = require('net') const { HTTPParser } = process.binding('http_parser') // eslint-disable-line net.createServer(socket => { socket.write('HTTP/1.1 200 OK\r\n') socket.write('Transfer-Encoding: chunked\r\n\r\n') setInterval(() => { socket.write('1\r\n') socket.write('\n\r\n') }, 500) }).listen(3111) const socket = net.connect(3111, '127.0.0.1') const parser = new HTTPParser(HTTPParser.RESPONSE, false) parser.initialize( HTTPParser.RESPONSE, {}, 0, false, 1e3 ) parser[HTTPParser.kOnTimeout] = () => { console.log('kOnTimeout') } parser[HTTPParser.kOnHeaders] = (rawHeaders) => { console.log('kOnHeaders') } parser[HTTPParser.kOnExecute] = (ret) => { console.log('kOnExecute') } parser[HTTPParser.kOnHeadersComplete] = (versionMajor, versionMinor, rawHeaders, method, url, statusCode, statusMessage, upgrade, shouldKeepAlive) => { console.log('kOnHeadersComplete') } parser[HTTPParser.kOnBody] = (chunk, offset, length) => { console.log('kOnBody') } parser[HTTPParser.kOnMessageComplete] = () => { console.log('kOnMessageComplete') } parser.consume(socket._handle)