aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <jarred@jarredsumner.com> 2022-05-08 01:12:46 -0700
committerGravatar Jarred Sumner <jarred@jarredsumner.com> 2022-05-08 01:12:46 -0700
commit61d548c7bff872d53417845d5219dc75cb7e5ecb (patch)
treef3d23ac685c545417363cde6a44559895e9fc111
parentc1efeefb8a481035d87ced9e01a30c9f95e0c2eb (diff)
downloadbun-61d548c7bff872d53417845d5219dc75cb7e5ecb.tar.gz
bun-61d548c7bff872d53417845d5219dc75cb7e5ecb.tar.zst
bun-61d548c7bff872d53417845d5219dc75cb7e5ecb.zip
[bun.js] Fix bug with headers not being sent in `fetch`
-rw-r--r--integration/bunjs-only-snippets/serve.test.ts22
-rw-r--r--src/javascript/jsc/webcore/response.zig1
2 files changed, 23 insertions, 0 deletions
diff --git a/integration/bunjs-only-snippets/serve.test.ts b/integration/bunjs-only-snippets/serve.test.ts
index 323caf1f8..653454cc3 100644
--- a/integration/bunjs-only-snippets/serve.test.ts
+++ b/integration/bunjs-only-snippets/serve.test.ts
@@ -32,6 +32,28 @@ it("should work for a file", async () => {
server.stop();
});
+it("fetch should work with headers", async () => {
+ const fixture = resolve(import.meta.dir, "./fetch.js.txt");
+
+ const server = serve({
+ port: port++,
+ fetch(req) {
+ if (req.headers.get("X-Foo") !== "bar") {
+ return new Response("X-Foo header not set", { status: 500 });
+ }
+ return new Response(file(fixture));
+ },
+ });
+ const response = await fetch(`http://localhost:${server.port}`, {
+ headers: {
+ "X-Foo": "bar",
+ },
+ });
+
+ expect(response.status).toBe(200);
+ server.stop();
+});
+
var count = 200;
it(`should work for a file ${count} times`, async () => {
const fixture = resolve(import.meta.dir, "./fetch.js.txt");
diff --git a/src/javascript/jsc/webcore/response.zig b/src/javascript/jsc/webcore/response.zig
index 1d4703bc1..bd6d05bcc 100644
--- a/src/javascript/jsc/webcore/response.zig
+++ b/src/javascript/jsc/webcore/response.zig
@@ -1041,6 +1041,7 @@ pub const Headers = struct {
.allocator = allocator,
};
headers.entries.ensureTotalCapacity(allocator, header_count) catch unreachable;
+ headers.entries.len = header_count;
headers.buf.ensureTotalCapacity(allocator, buf_len) catch unreachable;
headers.buf.items.len = buf_len;
var sliced = headers.entries.slice();