diff options
author | 2022-01-04 22:19:50 -0800 | |
---|---|---|
committer | 2022-01-04 22:19:50 -0800 | |
commit | 219aa57fbd2f84277565ce8a520a49b217dce451 (patch) | |
tree | 23dbf6b8e7846bb14f70e8f437fb894b5be04ea7 /src | |
parent | 5930ac09b74b3391beb6fd1d4d2210ca388f6412 (diff) | |
download | bun-219aa57fbd2f84277565ce8a520a49b217dce451.tar.gz bun-219aa57fbd2f84277565ce8a520a49b217dce451.tar.zst bun-219aa57fbd2f84277565ce8a520a49b217dce451.zip |
[bun dev] Print error in status line text
Diffstat (limited to 'src')
-rw-r--r-- | src/http.zig | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/src/http.zig b/src/http.zig index e7cd94d53..0f67f481d 100644 --- a/src/http.zig +++ b/src/http.zig @@ -536,6 +536,11 @@ pub const RequestContext = struct { return std.fmt.comptimePrint("HTTP/1.1 {d} {s}\r\n", .{ code, status_text }); } + var status_line_error_buf: [1024]u8 = undefined; + pub fn printStatusLineError(err: anyerror) []const u8 { + return std.fmt.bufPrint(&status_line_error_buf, "HTTP/1.1 500 {s}\r\n", .{@errorName(err)}) catch unreachable; + } + threadlocal var content_length_header_buf: [64]u8 = undefined; pub fn prepareToSendBody( @@ -612,6 +617,11 @@ pub const RequestContext = struct { ctx.status = code; } + pub fn writeStatusError(ctx: *RequestContext, err: anyerror) !void { + _ = try ctx.writeSocket(printStatusLineError(err), SOCKET_FLAGS); + ctx.status = @as(HTTPStatusCode, 500); + } + threadlocal var status_buf: [std.fmt.count("HTTP/1.1 {d} {s}\r\n", .{ 200, "OK" })]u8 = undefined; pub fn writeStatusSlow(ctx: *RequestContext, code: u16) !void { _ = try ctx.writeSocket( @@ -669,8 +679,8 @@ pub const RequestContext = struct { pub fn sendInternalError(ctx: *RequestContext, err: anytype) !void { defer ctx.done(); - try ctx.writeStatus(500); - const printed = std.fmt.bufPrint(&error_buf, "Error: {s}", .{@errorName(err)}) catch |err2| brk: { + try ctx.writeStatusError(err); + const printed = std.fmt.bufPrint(&error_buf, "error: {s}", .{@errorName(err)}) catch |err2| brk: { if (Environment.isDebug or Environment.isTest) { Global.panic("error while printing error: {s}", .{@errorName(err2)}); } @@ -1804,7 +1814,7 @@ pub const RequestContext = struct { switch (build_result.value) { .fail => { Output.prettyErrorln( - "Error: <b>{s}<r><b>", + "error: <b>{s}<r><b>", .{ file_path, }, |