http2: fix check for frame->hd.type

According to the comment, this should be checking whether
`frame->hd.type` is `NGHTTP2_GOAWAY`, i.e. `0x07` and not `0x03`.

PR-URL: https://github.com/nodejs/node/pull/57644
Refs: 1b693fa03a
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Rafael Gonzaga <rafael.nunu@hotmail.com>
This commit is contained in:
hanguanqiang 2025-04-09 19:48:11 +08:00 committed by GitHub
parent bc09144aa6
commit ada4abf2d1
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 4 additions and 4 deletions

View File

@ -1211,7 +1211,7 @@ int Http2Session::OnFrameNotSent(nghttp2_session* handle,
// closed but the Http2Session will still be up causing a memory leak. // closed but the Http2Session will still be up causing a memory leak.
// Therefore, if the GOAWAY frame couldn't be send due to // Therefore, if the GOAWAY frame couldn't be send due to
// ERR_SESSION_CLOSING we should force close from our side. // ERR_SESSION_CLOSING we should force close from our side.
if (frame->hd.type != 0x03) { if (frame->hd.type != NGHTTP2_GOAWAY) {
return 0; return 0;
} }
} }

View File

@ -29,9 +29,9 @@ async function requestAndClose(server) {
// Send a valid HEADERS frame // Send a valid HEADERS frame
const headersFrame = Buffer.concat([ const headersFrame = Buffer.concat([
Buffer.from([ Buffer.from([
0x00, 0x00, 0x0c, // Length: 12 bytes 0x00, 0x00, 0x0e, // Length: 14 bytes
0x01, // Type: HEADERS 0x01, // Type: HEADERS
0x05, // Flags: END_HEADERS + END_STREAM 0x04, // Flags: END_HEADERS
(streamId >> 24) & 0xFF, // Stream ID: high byte (streamId >> 24) & 0xFF, // Stream ID: high byte
(streamId >> 16) & 0xFF, (streamId >> 16) & 0xFF,
(streamId >> 8) & 0xFF, (streamId >> 8) & 0xFF,
@ -41,7 +41,7 @@ async function requestAndClose(server) {
0x82, // Indexed Header Field Representation (Predefined ":method: GET") 0x82, // Indexed Header Field Representation (Predefined ":method: GET")
0x84, // Indexed Header Field Representation (Predefined ":path: /") 0x84, // Indexed Header Field Representation (Predefined ":path: /")
0x86, // Indexed Header Field Representation (Predefined ":scheme: http") 0x86, // Indexed Header Field Representation (Predefined ":scheme: http")
0x44, 0x0a, // Custom ":authority: localhost" 0x41, 0x09, // ":authority: localhost" Length: 9 bytes
0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x68, 0x6f, 0x73, 0x74, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x68, 0x6f, 0x73, 0x74,
]), ]),
]); ]);