diff --git a/src/root.zig b/src/root.zig index 88feee6..39fd7ad 100644 --- a/src/root.zig +++ b/src/root.zig @@ -92,7 +92,8 @@ fn shutdown(signo: std.os.linux.SIG) callconv(.c) void { if (nserver == null) return; closed = true; - std.process.exit(130); + io.vtable.netShutdown(io.userdata, nserver.?.socket.handle, .recv) catch |e| + fern.err().err(e).log(); } pub fn listen() !void { @@ -118,9 +119,11 @@ pub fn listen() !void { var group: std.Io.Group = .init; defer group.cancel(io); - while (true) { - if (closed) break; - const stream = try nserver.?.accept(io); + while (!closed) { + const stream = nserver.?.accept(io) catch |e| { + fern.err().err(e).log(); + continue; + }; try group.concurrent(io, handler.task, .{ io, stream }); } }