mirror of
https://github.com/Ed94/Odin.git
synced 2026-08-06 15:48:51 +00:00
Merge pull request #3453 from GoNZooo/gonz.add-nosignal-broken-pipe
fix(net/linux): add `NOSIGNAL` to `send` options
This commit is contained in:
@@ -258,8 +258,12 @@ _send_tcp :: proc(tcp_sock: TCP_Socket, buf: []byte) -> (int, Network_Error) {
|
|||||||
for total_written < len(buf) {
|
for total_written < len(buf) {
|
||||||
limit := min(int(max(i32)), len(buf) - total_written)
|
limit := min(int(max(i32)), len(buf) - total_written)
|
||||||
remaining := buf[total_written:][:limit]
|
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 {
|
if errno == .EPIPE {
|
||||||
|
// If the peer is disconnected when we are trying to send we will get an `EPIPE` error,
|
||||||
|
// so we turn that into a clearer error
|
||||||
|
return total_written, TCP_Send_Error.Connection_Closed
|
||||||
|
} else if errno != .NONE {
|
||||||
return total_written, TCP_Send_Error(errno)
|
return total_written, TCP_Send_Error(errno)
|
||||||
}
|
}
|
||||||
total_written += int(res)
|
total_written += int(res)
|
||||||
|
|||||||
Reference in New Issue
Block a user