Module: wine Branch: master Commit: e521ee2cee4b78df85a25eb6e56dffbf94a93eed URL: http://source.winehq.org/git/wine.git/?a=commit;h=e521ee2cee4b78df85a25eb6e5...
Author: Kai Blin kai.blin@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