diff options
Diffstat (limited to 'src/javascript/jsc/api')
| -rw-r--r-- | src/javascript/jsc/api/html_rewriter.zig | 3 | ||||
| -rw-r--r-- | src/javascript/jsc/api/server.zig | 30 |
2 files changed, 13 insertions, 20 deletions
diff --git a/src/javascript/jsc/api/html_rewriter.zig b/src/javascript/jsc/api/html_rewriter.zig index e3a3c6d75..ac6190f7e 100644 --- a/src/javascript/jsc/api/html_rewriter.zig +++ b/src/javascript/jsc/api/html_rewriter.zig @@ -217,7 +217,7 @@ pub const HTMLRewriter = struct { pub fn returnEmptyResponse(this: *HTMLRewriter, global: *JSGlobalObject, response: *Response) JSValue { var result = bun.default_allocator.create(Response) catch unreachable; - response.cloneInto(result, getAllocator(global.ref())); + response.cloneInto(result, getAllocator(global.ref()), global); this.finalizeWithoutDestroy(); return JSValue.fromRef(Response.makeMaybePooled(global.ref(), result)); } @@ -280,7 +280,6 @@ pub const HTMLRewriter = struct { .body = .{ .init = .{ .status_code = 200, - .headers = null, }, .value = .{ .Locked = .{ diff --git a/src/javascript/jsc/api/server.zig b/src/javascript/jsc/api/server.zig index 38fad7c0c..aeb13b6bc 100644 --- a/src/javascript/jsc/api/server.zig +++ b/src/javascript/jsc/api/server.zig @@ -377,7 +377,7 @@ pub fn NewServer(comptime ssl_enabled: bool, comptime debug_mode: bool) type { response_ptr: ?*JSC.WebCore.Response = null, blob: JSC.WebCore.Blob = JSC.WebCore.Blob{}, promise: ?*JSC.JSValue = null, - response_headers: ?*JSC.WebCore.Headers.RefCountedHeaders = null, + response_headers: ?*JSC.FetchHeaders = null, has_abort_handler: bool = false, has_sendfile_ctx: bool = false, has_called_error_handler: bool = false, @@ -559,25 +559,18 @@ pub fn NewServer(comptime ssl_enabled: bool, comptime debug_mode: bool) type { fn writeHeaders( this: *RequestContext, - headers_: *Headers.RefCountedHeaders, + headers: *JSC.FetchHeaders, ) void { - var headers: *JSC.WebCore.Headers = headers_.get(); - if (headers.getHeaderIndex("content-length")) |index| { - headers.entries.orderedRemove(index); - } - - if (this.blob.content_type.len > 0 and headers.getHeaderIndex("content-type") == null) { - this.resp.writeHeader("content-type", this.blob.content_type); - } else if (MimeType.sniff(this.blob.sharedView())) |content| { - this.resp.writeHeader("content-type", content.value); + headers.remove(&ZigString.init("content-length")); + if (!headers.has(&ZigString.init("content-type"))) { + if (this.blob.content_type.len > 0) { + this.resp.writeHeader("content-type", this.blob.content_type); + } else if (MimeType.sniff(this.blob.sharedView())) |content| { + this.resp.writeHeader("content-type", content.value); + } } - defer headers_.deref(); - var entries = headers.entries.slice(); - const names = entries.items(.name); - const values = entries.items(.value); - - this.resp.writeHeaders(names, values, headers.buf.items); + headers.toUWSResponse(ssl_enabled, this.resp); } pub fn writeStatus(this: *RequestContext, status: u16) void { @@ -834,8 +827,9 @@ pub fn NewServer(comptime ssl_enabled: bool, comptime debug_mode: bool) type { this.writeStatus(status); - if (response.body.init.headers) |headers_| { + if (response.body.init.headers.as(JSC.FetchHeaders)) |headers_| { this.writeHeaders(headers_); + headers_.deref(); } else if (this.blob.content_type.len > 0) { this.resp.writeHeader("content-type", this.blob.content_type); } else if (MimeType.sniff(this.blob.sharedView())) |content| { |
