Better cancelation handling

Based on this conversation with Andrew
https://ziggit.dev/t/am-i-canceling-my-std-io-group-incorrectly/13836
This commit is contained in:
2026-01-06 20:48:10 -05:00
parent b87412ee66
commit cc03631838

View File

@@ -131,7 +131,8 @@ fn handleConnectionInfallible(
) !void { ) !void {
handleConnection(server, server_allocator, io, id, stream, r_buf_size, w_buf_size) catch |err| switch (err) { handleConnection(server, server_allocator, io, id, stream, r_buf_size, w_buf_size) catch |err| switch (err) {
error.Canceled => return error.Canceled, error.Canceled => return error.Canceled,
else => log.err("Failed processing client {d}: {any}", .{ id, err }), error.ClientDisconnected => log.debug("Client {d} disconnected", .{id}),
else => log.err("Failed processing client {d}: {t}", .{ id, err }),
}; };
} }
@@ -235,13 +236,9 @@ fn handleConnection(
}, },
} }
} else |err| switch (err) { } else |err| switch (err) {
error.EndOfStream, error.ReadFailed => { error.EndOfStream => return error.ClientDisconnected,
log.debug("Client {d} disconnected", .{id}); error.ReadFailed => return reader.err.?,
return error.Canceled; else => |e| return e,
},
else => {
return err;
},
} }
} }