Hans Leidekker : webservices: Set SO_REUSEADDR on listener sockets.

Alexandre Julliard julliard at winehq.org
Tue Jun 6 15:23:29 CDT 2017


Module: wine
Branch: master
Commit: cb1882f72e8c6e2cfab123e48c5ae2a05bcbd0ec
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=cb1882f72e8c6e2cfab123e48c5ae2a05bcbd0ec

Author: Hans Leidekker <hans at codeweavers.com>
Date:   Tue Jun  6 09:55:59 2017 +0200

webservices: Set SO_REUSEADDR on listener sockets.

Signed-off-by: Hans Leidekker <hans at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/webservices/listener.c | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/dlls/webservices/listener.c b/dlls/webservices/listener.c
index 5d6d1a8..af39783 100644
--- a/dlls/webservices/listener.c
+++ b/dlls/webservices/listener.c
@@ -315,7 +315,7 @@ static HRESULT open_listener_tcp( struct listener *listener, const WS_STRING *ur
 {
     struct sockaddr_storage storage;
     struct sockaddr *addr = (struct sockaddr *)&storage;
-    int addr_len;
+    int addr_len, on = 1;
     WS_URL_SCHEME_TYPE scheme;
     WCHAR *host;
     USHORT port;
@@ -337,6 +337,13 @@ static HRESULT open_listener_tcp( struct listener *listener, const WS_STRING *ur
     if ((listener->u.tcp.socket = socket( addr->sa_family, SOCK_STREAM, 0 )) == -1)
         return HRESULT_FROM_WIN32( WSAGetLastError() );
 
+    if (setsockopt( listener->u.tcp.socket, SOL_SOCKET, SO_REUSEADDR, (char *)&on, sizeof(on) ) < 0)
+    {
+        closesocket( listener->u.tcp.socket );
+        listener->u.tcp.socket = -1;
+        return HRESULT_FROM_WIN32( WSAGetLastError() );
+    }
+
     if (bind( listener->u.tcp.socket, addr, addr_len ) < 0)
     {
         closesocket( listener->u.tcp.socket );




More information about the wine-cvs mailing list