-
-
Notifications
You must be signed in to change notification settings - Fork 34.2k
Closed
Labels
confirmed-bugIssues with confirmed bugs.Issues with confirmed bugs.httpIssues or PRs related to the http subsystem.Issues or PRs related to the http subsystem.http_parserIssues and PRs related to the HTTP Parser dependency or the http_parser binding.Issues and PRs related to the HTTP Parser dependency or the http_parser binding.
Description
- Version: 15.8.*
- Platform: All
- Subsystem: http
What steps will reproduce the bug?
import net from 'net';
import http from 'http';
// create a simple server with too small of content-length
const body = 'HTTP/1.1 200 OK\r\n' +
'Content-Length: 5\r\n' +
'Connection: close\r\n' +
'\r\n' +
'2ad731e3-4dcd-4f70-b871-0ad284b29ffc'
const server = net.createServer((conn) => conn.end(body));
const port = 9191;
server.listen(port, () => {
// try to GET from the server
http.get('http://localhost:' + port);
});
// causes Error: Parse Error: Expected HTTP/How often does it reproduce? Is there a required condition?
Always
What is the expected behavior?
No error, doesn't read past content-length and/or doesn't try to parse a second response from a connection: close response. Unclear on expected HTTP semantics and common leniency here. Likely shouldn't do either I suspect.
What do you see instead?
$ node bug.js
node:events:355
throw er; // Unhandled 'error' event
^
Error: Parse Error: Expected HTTP/
at Socket.socketOnData (node:_http_client:502:22)
at Socket.emit (node:events:378:20)
at addChunk (node:internal/streams/readable:313:12)
at readableAddChunk (node:internal/streams/readable:288:9)
at Socket.Readable.push (node:internal/streams/readable:227:10)
at TCP.onStreamRead (node:internal/stream_base_commons:190:23)
Emitted 'error' event on ClientRequest instance at:
at Socket.socketOnData (node:_http_client:509:9)
at Socket.emit (node:events:378:20)
[... lines matching original stack trace ...]
at TCP.onStreamRead (node:internal/stream_base_commons:190:23) {
bytesParsed: 62,
code: 'HPE_INVALID_CONSTANT',
reason: 'Expected HTTP/',
rawPacket: Buffer(93) [Uint8Array] [
72, 84, 84, 80, 47, 49, 46, 49, 32, 50, 48, 48,
32, 79, 75, 13, 10, 67, 111, 110, 116, 101, 110, 116,
45, 76, 101, 110, 103, 116, 104, 58, 32, 53, 13, 10,
67, 111, 110, 110, 101, 99, 116, 105, 111, 110, 58, 32,
99, 108, 111, 115, 101, 13, 10, 13, 10, 50, 97, 100,
55, 51, 49, 101, 51, 45, 52, 100, 99, 100, 45, 52,
102, 55, 48, 45, 98, 56, 55, 49, 45, 48, 97, 100,
50, 56, 52, 98, 50, 57, 102, 102, 99
]
}Additional information
Metadata
Metadata
Assignees
Labels
confirmed-bugIssues with confirmed bugs.Issues with confirmed bugs.httpIssues or PRs related to the http subsystem.Issues or PRs related to the http subsystem.http_parserIssues and PRs related to the HTTP Parser dependency or the http_parser binding.Issues and PRs related to the HTTP Parser dependency or the http_parser binding.