Kai Blin : ws2_32: Implement SO_EXCLUSIVEADDRUSE for setsockopt.
Alexandre Julliard
julliard at wine.codeweavers.com
Thu Nov 30 13:40:55 CST 2006
Module: wine
Branch: master
Commit: e521ee2cee4b78df85a25eb6e56dffbf94a93eed
URL: http://source.winehq.org/git/wine.git/?a=commit;h=e521ee2cee4b78df85a25eb6e56dffbf94a93eed
Author: Kai Blin <kai.blin at gmail.com>
Date: Thu Nov 30 13:27:02 2006 +0100
ws2_32: Implement SO_EXCLUSIVEADDRUSE for setsockopt.
---
dlls/ws2_32/socket.c | 9 +++++++++
include/winsock.h | 2 ++
2 files changed, 11 insertions(+), 0 deletions(-)
diff --git a/dlls/ws2_32/socket.c b/dlls/ws2_32/socket.c
index 5b940c3..eed2c67 100644
--- a/dlls/ws2_32/socket.c
+++ b/dlls/ws2_32/socket.c
@@ -2729,6 +2729,15 @@ int WINAPI WS_setsockopt(SOCKET s, int l
return 0;
}
+ /* SO_EXCLUSIVEADDRUSE stops applications from binding to a port that is
+ * already used. This never works on Unix systems, so just ignore this
+ * setting*/
+ if ( level == WS_SOL_SOCKET && optname == WS_SO_EXCLUSIVEADDRUSE )
+ {
+ TRACE("Ignoring SO_EXCLUSIVEADDRUSE\n");
+ return 0;
+ }
+
#ifdef HAVE_IPX
if(level == NSPROTO_IPX)
{
diff --git a/include/winsock.h b/include/winsock.h
index 9d5165b..d31c84d 100644
--- a/include/winsock.h
+++ b/include/winsock.h
@@ -663,6 +663,7 @@ typedef struct WS(WSAData)
#define SO_DEBUG 0x0001
#define SO_ACCEPTCONN 0x0002
#define SO_REUSEADDR 0x0004
+#define SO_EXCLUSIVEADDRUSE ((u_int)(~SO_REUSEADDR))
#define SO_KEEPALIVE 0x0008
#define SO_DONTROUTE 0x0010
#define SO_BROADCAST 0x0020
@@ -696,6 +697,7 @@ typedef struct WS(WSAData)
#define WS_SO_DEBUG 0x0001
#define WS_SO_ACCEPTCONN 0x0002
#define WS_SO_REUSEADDR 0x0004
+#define WS_SO_EXCLUSIVEADDRUSE ((WS_u_int)(~WS_SO_REUSEADDR))
#define WS_SO_KEEPALIVE 0x0008
#define WS_SO_DONTROUTE 0x0010
#define WS_SO_BROADCAST 0x0020
More information about the wine-cvs
mailing list