| ... | @@ -36,25 +36,33 @@ pub fn main() !void { | ... | @@ -36,25 +36,33 @@ pub fn main() !void { |
| 36 | .zig_lib_directory = zig_lib_directory, | 36 | .zig_lib_directory = zig_lib_directory, |
| 37 | }; | 37 | }; |
| 38 | | 38 | |
| 39 | var read_buffer: [8000]u8 = undefined; | 39 | while (true) { |
| 40 | accept: while (true) { | | |
| 41 | const connection = try http_server.accept(); | 40 | const connection = try http_server.accept(); |
| 42 | defer connection.stream.close(); | 41 | _ = std.Thread.spawn(.{}, accept, .{ &context, connection }) catch |err| { |
| 43 | | 42 | std.log.err("unable to accept connection: {s}", .{@errorName(err)}); |
| 44 | var server = std.http.Server.init(connection, &read_buffer); | 43 | connection.stream.close(); |
| 45 | while (server.state == .ready) { | 44 | continue; |
| 46 | var request = server.receiveHead() catch |err| switch (err) { | 45 | }; |
| 47 | error.HttpConnectionClosing => continue :accept, | 46 | } |
| 48 | else => { | 47 | } |
| 49 | std.log.err("closing http connection: {s}", .{@errorName(err)}); | 48 | |
| 50 | continue :accept; | 49 | fn accept(context: *Context, connection: std.net.Server.Connection) void { |
| 51 | }, | 50 | defer connection.stream.close(); |
| 52 | }; | 51 | |
| 53 | serveRequest(&request, &context) catch |err| { | 52 | var read_buffer: [8000]u8 = undefined; |
| 54 | std.log.err("unable to serve {s}: {s}", .{ request.head.target, @errorName(err) }); | 53 | var server = std.http.Server.init(connection, &read_buffer); |
| 55 | continue :accept; | 54 | while (server.state == .ready) { |
| 56 | }; | 55 | var request = server.receiveHead() catch |err| switch (err) { |
| 57 | } | 56 | error.HttpConnectionClosing => return, |
| | 57 | else => { |
| | 58 | std.log.err("closing http connection: {s}", .{@errorName(err)}); |
| | 59 | return; |
| | 60 | }, |
| | 61 | }; |
| | 62 | serveRequest(&request, context) catch |err| { |
| | 63 | std.log.err("unable to serve {s}: {s}", .{ request.head.target, @errorName(err) }); |
| | 64 | return; |
| | 65 | }; |
| 58 | } | 66 | } |
| 59 | } | 67 | } |
| 60 | | 68 | |