diff --git a/core/net/errors_linux.odin b/core/net/errors_linux.odin index 2370dd0d8..5e2c52aea 100644 --- a/core/net/errors_linux.odin +++ b/core/net/errors_linux.odin @@ -136,6 +136,7 @@ TCP_Send_Error :: enum c.int { Interrupted = c.int(linux.Errno.EINTR), // A signal occurred before any data was transmitted. See signal(7). Timeout = c.int(linux.Errno.EWOULDBLOCK), // The send timeout duration passed before all data was sent. See Socket_Option.Send_Timeout. Not_Socket = c.int(linux.Errno.ENOTSOCK), // The so-called socket is not an open socket. + Broken_Pipe = c.int(linux.Errno.EPIPE), // The peer has disconnected when we are trying to send to it } // TODO diff --git a/core/net/socket_linux.odin b/core/net/socket_linux.odin index ba48959fb..9c4342592 100644 --- a/core/net/socket_linux.odin +++ b/core/net/socket_linux.odin @@ -258,7 +258,7 @@ _send_tcp :: proc(tcp_sock: TCP_Socket, buf: []byte) -> (int, Network_Error) { for total_written < len(buf) { limit := min(int(max(i32)), len(buf) - total_written) remaining := buf[total_written:][:limit] - res, errno := linux.send(linux.Fd(tcp_sock), remaining, {}) + res, errno := linux.send(linux.Fd(tcp_sock), remaining, {.NOSIGNAL}) if errno != .NONE { return total_written, TCP_Send_Error(errno) }