diff options
author | 2022-01-24 23:42:16 -0800 | |
---|---|---|
committer | 2022-01-24 23:42:16 -0800 | |
commit | ff7785e0237df00bba0946dc759bbfac6b561c5b (patch) | |
tree | 045bbf8e8fa48426581f9c7d20cd9149d551df54 /src/io/io_linux.zig | |
parent | 0e138bcc8f82715fcd84289ee7410570ceedd2a2 (diff) | |
download | bun-ff7785e0237df00bba0946dc759bbfac6b561c5b.tar.gz bun-ff7785e0237df00bba0946dc759bbfac6b561c5b.tar.zst bun-ff7785e0237df00bba0946dc759bbfac6b561c5b.zip |
Automatically retry on would block
Diffstat (limited to 'src/io/io_linux.zig')
-rw-r--r-- | src/io/io_linux.zig | 12 |
1 files changed, 4 insertions, 8 deletions
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, |