From 69b9ddfc720e20f2329a95026678fbaf4b3411a7 Mon Sep 17 00:00:00 2001 From: cozis Date: Thu, 4 Jun 2026 18:20:14 +0200 Subject: [PATCH] node: make accept blocking --- src/node.zig | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/node.zig b/src/node.zig index ac07ddf..5a0394f 100644 --- a/src/node.zig +++ b/src/node.zig @@ -450,12 +450,18 @@ pub const AcceptError = error { } || HandleError || Network.AcceptError || CancelError; pub fn accept(self: *Node, handle: Handle) AcceptError!Handle { - try self.scheduler.sleep(10); const old_desc = try self.handleToDescOfType(handle, .listen); const new_desc = self.unusedDesc() orelse return AcceptError.DescriptorLimit; - try self.network_host.accept(&old_desc.listen, &new_desc.conn); - new_desc.kind = .conn; - return self.descToHandle(new_desc); + + while (true) { + try self.scheduler.sleep(10); + self.network_host.accept(&old_desc.listen, &new_desc.conn) catch |err| switch (err) { + error.AcceptQueueEmpty => continue, + else => return err, + }; + new_desc.kind = .conn; + return self.descToHandle(new_desc); + } } pub const ConnectError = error {