diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/fallback.version | 2 | ||||
-rw-r--r-- | src/http.zig | 33 | ||||
m--------- | src/javascript/jsc/WebKit | 0 | ||||
-rw-r--r-- | src/javascript/jsc/javascript.zig | 12 | ||||
-rw-r--r-- | src/javascript/jsc/webcore/response.zig | 1 | ||||
-rw-r--r-- | src/runtime.version | 1 |
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 |