aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/fallback.version2
-rw-r--r--src/http.zig33
m---------src/javascript/jsc/WebKit0
-rw-r--r--src/javascript/jsc/javascript.zig12
-rw-r--r--src/javascript/jsc/webcore/response.zig1
-rw-r--r--src/runtime.version1
6 files changed, 29 insertions, 20 deletions
diff --git a/src/fallback.version b/src/fallback.version
index 75f3323de..fb76dcb20 100644
--- a/src/fallback.version
+++ b/src/fallback.version
@@ -1 +1 @@
-a5559a0075104616 \ No newline at end of file
+c098be5f3e938123 \ No newline at end of file
diff --git a/src/http.zig b/src/http.zig
index c8ca3157b..37f6795bd 100644
--- a/src/http.zig
+++ b/src/http.zig
@@ -1232,16 +1232,21 @@ pub const RequestContext = struct {
return;
}
var clone = try ctx.allocator.create(JavaScriptHandler);
- clone.ctx = ctx.*;
+ clone.* = JavaScriptHandler{
+ .ctx = ctx.*,
+ .conn = ctx.conn.*,
+ .params = if (params.len > 0)
+ try params.clone(ctx.allocator)
+ else
+ Router.Param.List{}
+ ,
+ };
+
- clone.conn = ctx.conn.*;
clone.ctx.conn = &clone.conn;
- if (params.len > 0) {
- clone.params = try params.clone(ctx.allocator);
- } else {
- clone.params = Router.Param.List{};
- }
+
+
clone.ctx.matched_route.?.params = &clone.params;
clone.ctx.matched_route.?.file_path = filepath_buf[0..ctx.matched_route.?.file_path.len];
@@ -1254,6 +1259,7 @@ pub const RequestContext = struct {
clone.ctx.matched_route.?.name = Router.Match.nameWithBasename(clone.ctx.matched_route.?.file_path, ctx.bundler.router.?.config.dir);
}
+
if (!has_loaded_channel) {
var handler_thread = try server.allocator.create(HandlerThread);
@@ -1271,7 +1277,7 @@ pub const RequestContext = struct {
.watcher = server.watcher,
.env_loader = server.bundler.env,
.origin = server.bundler.options.origin,
- .client_bundler = server.bundler,
+ .client_bundler = undefined,
};
} else {
handler_thread.* = HandlerThread{
@@ -1282,10 +1288,10 @@ pub const RequestContext = struct {
.env_loader = server.bundler.env,
.log = undefined,
.origin = server.bundler.options.origin,
- .client_bundler = server.bundler,
+ .client_bundler = undefined,
};
}
-
+try server.bundler.clone(server.allocator, &handler_thread.client_bundler);
handler_thread.log = try server.allocator.create(logger.Log);
handler_thread.log.* = logger.Log.init(server.allocator);
@@ -2296,7 +2302,7 @@ var serve_as_package_path = false;
pub const Server = struct {
log: logger.Log,
allocator: *std.mem.Allocator,
- bundler: Bundler,
+ bundler: *Bundler,
watcher: *Watcher,
timer: std.time.Timer = undefined,
transform_options: Api.TransformOptions,
@@ -2554,7 +2560,7 @@ pub const Server = struct {
req,
request_arena,
conn,
- &server.bundler,
+ server.bundler,
server.watcher,
server.timer,
) catch |err| {
@@ -2774,7 +2780,8 @@ pub const Server = struct {
.timer = try std.time.Timer.start(),
};
global_start_time = server.timer;
- server.bundler = try Bundler.init(allocator, &server.log, options, null, null);
+ server.bundler = try allocator.create(Bundler);
+ server.bundler.* = try Bundler.init(allocator, &server.log, options, null, null);
server.bundler.configureLinker();
try server.bundler.configureRouter(true);
diff --git a/src/javascript/jsc/WebKit b/src/javascript/jsc/WebKit
-Subproject 1d5ca69e3eedd5b4d1197bbb90860b254a8a8ee
+Subproject e7d31961d4bf98b3e8b1df3ea0398ea1517a61d
diff --git a/src/javascript/jsc/javascript.zig b/src/javascript/jsc/javascript.zig
index 24b59f91f..e4c09c3d2 100644
--- a/src/javascript/jsc/javascript.zig
+++ b/src/javascript/jsc/javascript.zig
@@ -1330,6 +1330,9 @@ pub const EventListenerMixin = struct {
ctx: *CtxType,
comptime onError: fn (ctx: *CtxType, err: anyerror, value: JSValue, request_ctx: *http.RequestContext) anyerror!void,
) !void {
+ defer {
+ if (request_context.has_called_done) request_context.arena.deinit();
+ }
var listeners = vm.event_listeners.get(EventType.fetch) orelse (return onError(ctx, error.NoListeners, JSValue.jsUndefined(), request_context) catch {});
if (listeners.items.len == 0) return onError(ctx, error.NoListeners, JSValue.jsUndefined(), request_context) catch {};
const FetchEventRejectionHandler = struct {
@@ -1346,6 +1349,7 @@ pub const EventListenerMixin = struct {
// Rely on JS finalizer
var fetch_event = try vm.allocator.create(FetchEvent);
+
fetch_event.* = FetchEvent{
.request_context = request_context,
.request = Request{ .request_context = request_context },
@@ -1366,7 +1370,7 @@ pub const EventListenerMixin = struct {
if (fetch_event.rejected) return;
if (promise.status(vm.global.vm()) == .Rejected) {
- onError(ctx, error.JSError, promise.result(vm.global.vm()), request_context) catch {};
+ onError(ctx, error.JSError, promise.result(vm.global.vm()), fetch_event.request_context) catch {};
return;
} else {
_ = promise.result(vm.global.vm());
@@ -1374,13 +1378,13 @@ pub const EventListenerMixin = struct {
vm.global.vm().drainMicrotasks();
- if (request_context.has_called_done) {
+ if (fetch_event.request_context.has_called_done) {
break;
}
}
- if (!request_context.has_called_done) {
- onError(ctx, error.FetchHandlerRespondWithNeverCalled, JSValue.jsUndefined(), request_context) catch {};
+ if (!fetch_event.request_context.has_called_done) {
+ onError(ctx, error.FetchHandlerRespondWithNeverCalled, JSValue.jsUndefined(), fetch_event.request_context) catch {};
return;
}
}
diff --git a/src/javascript/jsc/webcore/response.zig b/src/javascript/jsc/webcore/response.zig
index b62645218..cd4dff8c8 100644
--- a/src/javascript/jsc/webcore/response.zig
+++ b/src/javascript/jsc/webcore/response.zig
@@ -1145,7 +1145,6 @@ pub const FetchEvent = struct {
},
);
}
- this.request_context.arena.deinit();
}
var needs_mime_type = true;
diff --git a/src/runtime.version b/src/runtime.version
index b309f488e..e69de29bb 100644
--- a/src/runtime.version
+++ b/src/runtime.version
@@ -1 +0,0 @@
-a36793f60275e5e9 \ No newline at end of file