[PATCH 6/6] server: Map ENODEV to STATUS_INVALID_ADDRESS_COMPONENT.
Zebediah Figura
zfigura at codeweavers.com
Wed Jul 21 20:34:55 CDT 2021
Signed-off-by: Zebediah Figura <zfigura at codeweavers.com>
---
dlls/ws2_32/tests/sock.c | 4 +++-
server/sock.c | 3 +++
2 files changed, 6 insertions(+), 1 deletion(-)
diff --git a/dlls/ws2_32/tests/sock.c b/dlls/ws2_32/tests/sock.c
index ed7d5121332..41fcb5d9248 100644
--- a/dlls/ws2_32/tests/sock.c
+++ b/dlls/ws2_32/tests/sock.c
@@ -10674,8 +10674,10 @@ static void test_bind(void)
addr6.sin6_scope_id = 0xabacab;
ret = bind(s, (struct sockaddr *)&addr6, sizeof(addr6));
todo_wine_if (!((const struct sockaddr_in6 *)unicast_addr->Address.lpSockaddr)->sin6_scope_id)
+ {
ok(ret == -1, "expected failure\n");
- todo_wine ok(WSAGetLastError() == WSAEADDRNOTAVAIL, "got error %u\n", WSAGetLastError());
+ ok(WSAGetLastError() == WSAEADDRNOTAVAIL, "got error %u\n", WSAGetLastError());
+ }
addr6.sin6_scope_id = 0;
ret = bind(s, (struct sockaddr *)&addr6, sizeof(addr6));
diff --git a/server/sock.c b/server/sock.c
index e28b0349027..f730bb31c55 100644
--- a/server/sock.c
+++ b/server/sock.c
@@ -1976,6 +1976,9 @@ static int sock_get_ntstatus( int err )
case ENOPROTOOPT: return STATUS_INVALID_PARAMETER;
case EOPNOTSUPP: return STATUS_NOT_SUPPORTED;
case EADDRINUSE: return STATUS_SHARING_VIOLATION;
+ /* Linux returns ENODEV when specifying an invalid sin6_scope_id;
+ * Windows returns STATUS_INVALID_ADDRESS_COMPONENT */
+ case ENODEV:
case EADDRNOTAVAIL: return STATUS_INVALID_ADDRESS_COMPONENT;
case ECONNREFUSED: return STATUS_CONNECTION_REFUSED;
case ESHUTDOWN: return STATUS_PIPE_DISCONNECTED;
--
2.30.2
More information about the wine-devel
mailing list