aboutsummaryrefslogtreecommitdiff
path: root/src/io/io_linux.zig
diff options
context:
space:
mode:
authorGravatar Jarred SUmner <jarred@jarredsumner.com> 2022-01-24 23:42:16 -0800
committerGravatar Jarred SUmner <jarred@jarredsumner.com> 2022-01-24 23:42:16 -0800
commitff7785e0237df00bba0946dc759bbfac6b561c5b (patch)
tree045bbf8e8fa48426581f9c7d20cd9149d551df54 /src/io/io_linux.zig
parent0e138bcc8f82715fcd84289ee7410570ceedd2a2 (diff)
downloadbun-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.zig12
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,