authorgravatar for kenta@lithdew.netlithdew <kenta@lithdew.net> 2021-03-31 00:28:48+09:00
committergravatar for mail@isaacfreund.comIsaac Freund <mail@isaacfreund.com> 2021-04-01 14:18:49+02:00
log59035ae3e9d2de2d95036ff522fb926a3bd27b3c
tree7f98085945d87a9f64e3fbe44fa3a790a497365d
parent070a28e493c6994197b2e52f42f3d0020b7395aa

os: handle ECONNRESET for connect() syscall


1 files changed, 2 insertions(+), 0 deletions(-)

lib/std/os.zig+2
......@@ -3267,6 +3267,7 @@ pub fn connect(sock: socket_t, sock_addr: *const sockaddr, len: socklen_t) Conne
32673267 .WSAEADDRINUSE => return error.AddressInUse,
32683268 .WSAEADDRNOTAVAIL => return error.AddressNotAvailable,
32693269 .WSAECONNREFUSED => return error.ConnectionRefused,
3270 .WSAECONNRESET => return error.ConnectionResetByPeer,
32703271 .WSAETIMEDOUT => return error.ConnectionTimedOut,
32713272 .WSAEHOSTUNREACH, // TODO: should we return NetworkUnreachable in this case as well?
32723273 .WSAENETUNREACH,
......@@ -3296,6 +3297,7 @@ pub fn connect(sock: socket_t, sock_addr: *const sockaddr, len: socklen_t) Conne
32963297 EALREADY => unreachable, // The socket is nonblocking and a previous connection attempt has not yet been completed.
32973298 EBADF => unreachable, // sockfd is not a valid open file descriptor.
32983299 ECONNREFUSED => return error.ConnectionRefused,
3300 ECONNRESET => return error.ConnectionResetByPeer,
32993301 EFAULT => unreachable, // The socket structure address is outside the user's address space.
33003302 EINTR => continue,
33013303 EISCONN => unreachable, // The socket is already connected.