mirror of
https://github.com/denoland/deno.git
synced 2025-08-04 19:08:15 +00:00
fix(ext/node): handle non-ws upgrade headers (#27931)
This commit is contained in:
parent
4405f47a4f
commit
441b1d307f
2 changed files with 34 additions and 2 deletions
|
@ -548,8 +548,11 @@ class ClientRequest extends OutgoingMessage {
|
|||
incoming.statusMessage = res.statusText;
|
||||
incoming.upgrade = null;
|
||||
|
||||
for (const [key, _value] of res.headers) {
|
||||
if (key.toLowerCase() === "upgrade") {
|
||||
for (const [key, value] of res.headers) {
|
||||
if (
|
||||
key.toLowerCase() === "upgrade" &&
|
||||
value.toLowerCase() === "websocket"
|
||||
) {
|
||||
incoming.upgrade = true;
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -372,6 +372,35 @@ Deno.test("[node/http] request default protocol", async () => {
|
|||
assertEquals(clientRes!.complete, true);
|
||||
});
|
||||
|
||||
Deno.test("[node/http] request non-ws upgrade header", async () => {
|
||||
const { promise, resolve } = Promise.withResolvers<void>();
|
||||
const server = http.createServer((_req, res) => {
|
||||
res.writeHead(200, { "upgrade": "h2,h2c" });
|
||||
res.end("ok");
|
||||
});
|
||||
server.listen(() => {
|
||||
const req = http.request(
|
||||
{
|
||||
host: "localhost",
|
||||
// deno-lint-ignore no-explicit-any
|
||||
port: (server.address() as any).port,
|
||||
},
|
||||
(res) => {
|
||||
res.on("data", () => {});
|
||||
res.on("end", () => {
|
||||
server.close();
|
||||
});
|
||||
assertEquals(res.statusCode, 200);
|
||||
},
|
||||
);
|
||||
req.end();
|
||||
});
|
||||
server.on("close", () => {
|
||||
resolve();
|
||||
});
|
||||
await promise;
|
||||
});
|
||||
|
||||
Deno.test("[node/http] request with headers", async () => {
|
||||
const { promise, resolve } = Promise.withResolvers<void>();
|
||||
const server = http.createServer((req, res) => {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue