[prev in list] [next in list] [prev in thread] [next in thread] 

List:       wine-patches
Subject:    ws2_32: Implement SO_EXCLUSIVEADDRUSE for setsockopt
From:       Kai Blin <kai.blin () gmail ! com>
Date:       2006-11-30 12:27:02
Message-ID: 200611301327.03844.kai.blin () gmail ! com
[Download RAW message or body]

---
 dlls/ws2_32/socket.c |    9 +++++++++
 include/winsock.h    |    2 ++
 2 files changed, 11 insertions(+), 0 deletions(-)

["1643d3d11cda982e7c10a1bf0ab67f6df842f57d.diff" (text/x-patch)]

diff --git a/dlls/ws2_32/socket.c b/dlls/ws2_32/socket.c
index 0d4af98..80640a6 100644
--- a/dlls/ws2_32/socket.c
+++ b/dlls/ws2_32/socket.c
@@ -2753,6 +2753,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..9769e68 100644
--- a/include/winsock.h
+++ b/include/winsock.h
@@ -663,6 +663,7 @@ #define SOL_SOCKET                 0xfff
 #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 @@ #define WS_SOL_SOCKET              0xfff
 #define WS_SO_DEBUG                0x0001
 #define WS_SO_ACCEPTCONN           0x0002
 #define WS_SO_REUSEADDR            0x0004
+#define WS_SO_EXCLUSIVEADDRUSE     ((u_int)(~WS_SO_REUSEADDR))
 #define WS_SO_KEEPALIVE            0x0008
 #define WS_SO_DONTROUTE            0x0010
 #define WS_SO_BROADCAST            0x0020




[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic