From ff7785e0237df00bba0946dc759bbfac6b561c5b Mon Sep 17 00:00:00 2001 From: Jarred SUmner Date: Mon, 24 Jan 2022 23:42:16 -0800 Subject: Automatically retry on would block --- src/io/io_linux.zig | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) (limited to 'src/io/io_linux.zig') diff --git a/src/io/io_linux.zig b/src/io/io_linux.zig index c950ee8ea..dba0ab7c5 100644 --- a/src/io/io_linux.zig +++ b/src/io/io_linux.zig @@ -798,7 +798,7 @@ pub const Completion = struct { }, .connect => { const result = if (completion.result < 0) switch (-completion.result) { - os.EINTR => { + os.EAGAIN, os.EINPROGRESS, os.EINTR => { completion.io.enqueue(completion); return; }, @@ -806,7 +806,6 @@ pub const Completion = struct { os.EADDRINUSE => error.AddressInUse, os.EADDRNOTAVAIL => error.AddressNotAvailable, os.EAFNOSUPPORT => error.AddressFamilyNotSupported, - os.EAGAIN, os.EINPROGRESS => error.WouldBlock, os.EALREADY => error.OpenAlreadyInProgress, os.EBADF => error.FileDescriptorInvalid, os.ECONNREFUSED => error.ConnectionRefused, @@ -840,11 +839,10 @@ pub const Completion = struct { }, .read => { const result = if (completion.result < 0) switch (-completion.result) { - os.EINTR => { + os.EAGAIN, os.EINTR => { completion.io.enqueue(completion); return; }, - os.EAGAIN => error.WouldBlock, os.EBADF => error.NotOpenForReading, os.ECONNRESET => error.ConnectionResetByPeer, os.EINVAL => error.Alignment, @@ -861,11 +859,10 @@ pub const Completion = struct { }, .readev, .recv => { const result = if (completion.result < 0) switch (-completion.result) { - os.EINTR => { + os.EAGAIN, os.EINTR => { completion.io.enqueue(completion); return; }, - os.EAGAIN => error.WouldBlock, os.EBADF => error.FileDescriptorInvalid, os.ECONNREFUSED => error.ConnectionRefused, os.ENOMEM => error.SystemResources, @@ -878,12 +875,11 @@ pub const Completion = struct { }, .writev, .send => { const result = if (completion.result < 0) switch (-completion.result) { - os.EINTR => { + os.EAGAIN, os.EINTR => { completion.io.enqueue(completion); return; }, os.EACCES => error.AccessDenied, - os.EAGAIN => error.WouldBlock, os.EALREADY => error.FastOpenAlreadyInProgress, os.EAFNOSUPPORT => error.AddressFamilyNotSupported, os.EBADF => error.FileDescriptorInvalid, -- cgit v1.2.3