Skip to content

Commit

Permalink
chore(tests): prepare testing setup for http2 and https (#190)
Browse files Browse the repository at this point in the history
* chore(tests): prepare testing setup for http2 and https

* chore(tests): skip some https/http2 tests on some platforms
  • Loading branch information
cyco130 authored Dec 1, 2024
1 parent 66ce13e commit 1e816c2
Show file tree
Hide file tree
Showing 9 changed files with 388 additions and 210 deletions.
15 changes: 9 additions & 6 deletions packages/adapter/adapter-node/src/request.ts
Original file line number Diff line number Diff line change
Expand Up @@ -77,12 +77,6 @@ export function createRequestAdapter(
}

let headers = req.headers as any;
// Filter out pseudo-headers
if (headers[":method"]) {
headers = Object.fromEntries(
Object.entries(headers).filter(([key]) => !key.startsWith(":")),
);
}

const ip =
req.ip ||
Expand All @@ -94,12 +88,14 @@ export function createRequestAdapter(
protocolOverride ||
req.protocol ||
(trustProxy && parseForwardedHeader("proto")) ||
headers[":scheme"] ||
(req.socket?.encrypted && "https") ||
"http";

let host =
hostOverride ||
(trustProxy && parseForwardedHeader("host")) ||
headers[":authority"] ||
headers.host;

if (!host && !warned) {
Expand All @@ -111,6 +107,13 @@ export function createRequestAdapter(
host = "localhost";
}

// Filter out HTTP/2 pseudo-headers
if (headers[":method"]) {
headers = Object.fromEntries(
Object.entries(headers).filter(([key]) => !key.startsWith(":")),
);
}

const controller = new AbortController();
req.once("close", () => {
if (!res.writableEnded) {
Expand Down
18 changes: 11 additions & 7 deletions packages/adapter/adapter-node/src/response.ts
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ export async function sendResponse(
const hasContentLength = fetchResponse.headers.has("Content-Length");

if ((fetchResponse as any)[rawBodySymbol]) {
writeHead(fetchResponse, res);
writeHead(fetchResponse, res, req);
res.end((fetchResponse as any)[rawBodySymbol]);
return;
}
Expand All @@ -52,7 +52,7 @@ export async function sendResponse(
if (!hasContentLength) {
res.setHeader("Content-Length", "0");
}
writeHead(fetchResponse, res);
writeHead(fetchResponse, res, req);
res.end();
return;
}
Expand All @@ -71,7 +71,7 @@ export async function sendResponse(
}
if (setImmediateFired) {
if (!bufferWritten) {
writeHead(fetchResponse, res);
writeHead(fetchResponse, res, req);
for (const chunk of chunks) {
await writeAndAwait(chunk, res, signal);
if (signal.aborted) {
Expand Down Expand Up @@ -107,13 +107,17 @@ export async function sendResponse(
if (!hasContentLength) {
res.setHeader("Content-Length", buffer.length);
}
writeHead(fetchResponse, res);
writeHead(fetchResponse, res, req);
res.end(buffer);
}

function writeHead(fetchResponse: Response, nodeResponse: ServerResponse) {
function writeHead(
fetchResponse: Response,
nodeResponse: ServerResponse,
nodeRequest: DecoratedRequest,
) {
nodeResponse.statusCode = fetchResponse.status;
if (fetchResponse.statusText) {
if (nodeRequest.httpVersionMajor === 1 && fetchResponse.statusText) {
nodeResponse.statusMessage = fetchResponse.statusText;
}

Expand All @@ -134,7 +138,7 @@ async function writeAndAwait(
res: ServerResponse,
signal: AbortSignal,
) {
const written = res.write(chunk);
const written = (res.write as any)(chunk);
if (!written) {
await new Promise<void>((resolve, reject) => {
function cleanup() {
Expand Down
Loading

0 comments on commit 1e816c2

Please sign in to comment.