Ignore ConnectionClosed error on server shutdown

Our shutdown could be cleaner, but this at least removes a meaningless (because
we're shutting down) log.err that was happening on every test run.
This commit is contained in:
Karl Seguin
2025-08-29 16:21:26 +08:00
parent 431db85ecb
commit aef614823b

View File

@@ -40,6 +40,7 @@ const MAX_MESSAGE_SIZE = 512 * 1024 + 14 + 140;
pub const Server = struct { pub const Server = struct {
app: *App, app: *App,
shutdown: bool,
allocator: Allocator, allocator: Allocator,
client: ?posix.socket_t, client: ?posix.socket_t,
listener: ?posix.socket_t, listener: ?posix.socket_t,
@@ -54,16 +55,20 @@ pub const Server = struct {
.app = app, .app = app,
.client = null, .client = null,
.listener = null, .listener = null,
.shutdown = false,
.allocator = allocator, .allocator = allocator,
.json_version_response = json_version_response, .json_version_response = json_version_response,
}; };
} }
pub fn deinit(self: *Server) void { pub fn deinit(self: *Server) void {
self.allocator.free(self.json_version_response); self.shutdown = true;
if (self.listener) |listener| { if (self.listener) |listener| {
posix.close(listener); posix.close(listener);
} }
// *if* server.run is running, we should really wait for it to return
// before existing from here.
self.allocator.free(self.json_version_response);
} }
pub fn run(self: *Server, address: net.Address, timeout_ms: i32) !void { pub fn run(self: *Server, address: net.Address, timeout_ms: i32) !void {
@@ -82,6 +87,9 @@ pub const Server = struct {
log.info(.app, "server running", .{ .address = address }); log.info(.app, "server running", .{ .address = address });
while (true) { while (true) {
const socket = posix.accept(listener, null, null, posix.SOCK.NONBLOCK) catch |err| { const socket = posix.accept(listener, null, null, posix.SOCK.NONBLOCK) catch |err| {
if (self.shutdown) {
return;
}
log.err(.app, "CDP accept", .{ .err = err }); log.err(.app, "CDP accept", .{ .err = err });
std.time.sleep(std.time.ns_per_s); std.time.sleep(std.time.ns_per_s);
continue; continue;