From 391b1f68286f7d1eb4a15b06e039b2a4c47f35b2 Mon Sep 17 00:00:00 2001 From: Richard Frith-MacDonald Date: Sun, 7 Dec 2008 06:50:14 +0000 Subject: [PATCH] Add exclusive mode for windows git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@27241 72102866-910b-0410-8b05-ffd578937521 --- Source/GNUmakefile | 1 + Tools/gdomap.c | 30 ++++++++++++++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/Source/GNUmakefile b/Source/GNUmakefile index 96b5c973d..ff0f18b13 100644 --- a/Source/GNUmakefile +++ b/Source/GNUmakefile @@ -130,6 +130,7 @@ GSFunctions.h \ GSMime.h \ GSXML.h \ GSLocale.h \ +NSTask+GS.h \ Unicode.h \ GNUstep.h \ behavior.h \ diff --git a/Tools/gdomap.c b/Tools/gdomap.c index 4e291bb69..9e6d2f8dd 100644 --- a/Tools/gdomap.c +++ b/Tools/gdomap.c @@ -1680,6 +1680,21 @@ init_ports() sprintf(ebuf, "Opened UDP socket %d", udp_desc); gdomap_log(LOG_DEBUG); } +#if defined(__MINGW32__) + r = 1; + if ((setsockopt(udp_desc,SOL_SOCKET,SO_REUSEADDR,(char*)&r,sizeof(r)))<0) + { + sprintf(ebuf, "Unable to set 're-use' on UDP socket"); + gdomap_log(LOG_WARNING); + } + r = 1; + if ((setsockopt + (udp_desc,SOL_SOCKET,SO_EXCLUSIVEADDRUSE,(char*)&r,sizeof(r)))<0) + { + sprintf(ebuf, "Unable to set 'exclusive-use' on UDP socket"); + gdomap_log(LOG_WARNING); + } +#endif #ifndef BROKEN_SO_REUSEADDR /* * Under decent systems, SO_REUSEADDR means that the port can be reused @@ -1773,6 +1788,21 @@ init_ports() sprintf(ebuf, "Opened TDP socket %d", tcp_desc); gdomap_log(LOG_DEBUG); } +#if defined(__MINGW32__) + r = 1; + if ((setsockopt(tcp_desc,SOL_SOCKET,SO_REUSEADDR,(char*)&r,sizeof(r)))<0) + { + sprintf(ebuf, "Unable to set 're-use' on TCP socket"); + gdomap_log(LOG_WARNING); + } + r = 1; + if ((setsockopt + (tcp_desc,SOL_SOCKET,SO_EXCLUSIVEADDRUSE,(char*)&r,sizeof(r)))<0) + { + sprintf(ebuf, "Unable to set 'exclusive-use' on TCP socket"); + gdomap_log(LOG_WARNING); + } +#endif #ifndef BROKEN_SO_REUSEADDR /* * Under decent systems, SO_REUSEADDR means that the port can be reused