| 'use strict'; |
| const common = require('../common'); |
| |
| const net = require('net'); |
| const { HTTPParser } = process.binding('http_parser'); |
| |
| 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, |
| 0, |
| ); |
| |
| parser[HTTPParser.kOnTimeout] = common.mustNotCall(); |
| |
| parser[HTTPParser.kOnHeaders] = common.mustNotCall(); |
| |
| parser[HTTPParser.kOnExecute] = common.mustCallAtLeast(3); |
| |
| parser[HTTPParser.kOnHeadersComplete] = common.mustCall(); |
| |
| parser[HTTPParser.kOnBody] = common.mustCall(2); |
| |
| parser[HTTPParser.kOnMessageComplete] = common.mustNotCall(); |
| |
| parser.consume(socket._handle); |
| }); |