treesummaryrefslogcommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/main.zig13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/main.zig b/src/main.zig
index 1e7f9e8..cf64c8e 100644
--- a/src/main.zig
+++ b/src/main.zig
@@ -21,7 +21,12 @@ fn handle_websocket(alloc: std.mem.Allocator, websocket: *WebSocket) void {
m.unlock();
defer {
- for (0..clients.items.len) |i| { if (std.mem.eql(u8, websocket.key, clients.items[i].key)) { _ = clients.swapRemove(i); break; } }
+ for (0..clients.items.len) |i| {
+ if (std.mem.eql(u8, websocket.key, clients.items[i].key)) {
+ _ = clients.swapRemove(i);
+ break;
+ }
+ }
std.debug.print("{} clients\n", .{clients.items.len});
}
@@ -129,10 +134,14 @@ pub fn main(init: std.process.Init) !void {
const address = try std.Io.net.IpAddress.parseIp4("0.0.0.0", port);
var net_server = try address.listen(io, .{ .reuse_address = true });
+ var group: Io.Group = .init;
+ defer group.cancel(io);
+
while (true) {
const stream = try net_server.accept(io);
+ errdefer stream.close(io);
- _ = io.async(handle_request, .{ arena, io, stream });
+ group.async(io, handle_request, .{ arena, io, stream });
// std.debug.print("created http thread\n", .{});
}