diff --git a/repos/ports/include/noux_session/sysio.h b/repos/ports/include/noux_session/sysio.h index 5cc8e7c65..693ee32cb 100644 --- a/repos/ports/include/noux_session/sysio.h +++ b/repos/ports/include/noux_session/sysio.h @@ -283,7 +283,9 @@ namespace Noux { enum Connect_error { CONNECT_ERR_ACCESS, CONNECT_ERR_AGAIN, CONNECT_ERR_ALREADY, CONNECT_ERR_CONN_REFUSED, CONNECT_ERR_NO_PERM, CONNECT_ERR_ADDR_IN_USE, - CONNECT_ERR_IN_PROGRESS, CONNECT_ERR_IS_CONNECTED }; + CONNECT_ERR_IN_PROGRESS, CONNECT_ERR_IS_CONNECTED, + CONNECT_ERR_RESET, CONNECT_ERR_ABORTED, + CONNECT_ERR_NO_ROUTE }; enum Listen_error { LISTEN_ERR_ADDR_IN_USE, LISTEN_ERR_NOT_SUPPORTED }; diff --git a/repos/ports/src/lib/libc_noux/plugin.cc b/repos/ports/src/lib/libc_noux/plugin.cc index 3256d2b00..f9997bc8c 100644 --- a/repos/ports/src/lib/libc_noux/plugin.cc +++ b/repos/ports/src/lib/libc_noux/plugin.cc @@ -1888,12 +1888,15 @@ namespace { if (!noux_syscall(Noux::Session::SYSCALL_CONNECT)) { switch (sysio()->error.connect) { - case Noux::Sysio::CONNECT_ERR_AGAIN: errno = EAGAIN; break; - case Noux::Sysio::CONNECT_ERR_ALREADY: errno = EALREADY; break; - case Noux::Sysio::CONNECT_ERR_ADDR_IN_USE: errno = EADDRINUSE; break; - case Noux::Sysio::CONNECT_ERR_IN_PROGRESS: errno = EINPROGRESS; break; - case Noux::Sysio::CONNECT_ERR_IS_CONNECTED: errno = EISCONN; break; - default: errno = 0; break; + case Noux::Sysio::CONNECT_ERR_AGAIN: errno = EAGAIN; break; + case Noux::Sysio::CONNECT_ERR_ALREADY: errno = EALREADY; break; + case Noux::Sysio::CONNECT_ERR_ADDR_IN_USE: errno = EADDRINUSE; break; + case Noux::Sysio::CONNECT_ERR_IN_PROGRESS: errno = EINPROGRESS; break; + case Noux::Sysio::CONNECT_ERR_IS_CONNECTED: errno = EISCONN; break; + case Noux::Sysio::CONNECT_ERR_RESET: errno = ECONNRESET; break; + case Noux::Sysio::CONNECT_ERR_ABORTED: errno = ECONNABORTED; break; + case Noux::Sysio::CONNECT_ERR_NO_ROUTE: errno = EHOSTUNREACH; break; + default: errno = 0; break; } return -1; } diff --git a/repos/ports/src/noux/net/socket_io_channel.h b/repos/ports/src/noux/net/socket_io_channel.h index 0f38d0f3b..d3251d683 100644 --- a/repos/ports/src/noux/net/socket_io_channel.h +++ b/repos/ports/src/noux/net/socket_io_channel.h @@ -266,11 +266,15 @@ namespace Noux { if (result == -1) { switch (errno) { - case EAGAIN: sysio->error.connect = Sysio::CONNECT_ERR_AGAIN; break; - case EALREADY: sysio->error.connect = Sysio::CONNECT_ERR_ALREADY; break; - case EADDRINUSE: sysio->error.connect = Sysio::CONNECT_ERR_ADDR_IN_USE; break; - case EINPROGRESS: sysio->error.connect = Sysio::CONNECT_ERR_IN_PROGRESS; break; - case EISCONN: sysio->error.connect = Sysio::CONNECT_ERR_IS_CONNECTED; break; + case EAGAIN: sysio->error.connect = Sysio::CONNECT_ERR_AGAIN; break; + case EALREADY: sysio->error.connect = Sysio::CONNECT_ERR_ALREADY; break; + case EADDRINUSE: sysio->error.connect = Sysio::CONNECT_ERR_ADDR_IN_USE; break; + case EINPROGRESS: sysio->error.connect = Sysio::CONNECT_ERR_IN_PROGRESS; break; + case EISCONN: sysio->error.connect = Sysio::CONNECT_ERR_IS_CONNECTED; break; + case ECONNRESET: sysio->error.connect = Sysio::CONNECT_ERR_RESET; break; + case ECONNABORTED: sysio->error.connect = Sysio::CONNECT_ERR_ABORTED; break; + case EHOSTUNREACH: sysio->error.connect = Sysio::CONNECT_ERR_NO_ROUTE; break; + default: PDBG("unhandled errno: %d", errno); break;