OSDN Git Service

* net.cc (cygwin_setsockopt): Only skip calling setsockopt(SO_REUSEADDR)
authorcorinna <corinna>
Wed, 16 Dec 2009 02:08:19 +0000 (02:08 +0000)
committercorinna <corinna>
Wed, 16 Dec 2009 02:08:19 +0000 (02:08 +0000)
on stream sockets under systems supporting enhanced socket security.

winsup/cygwin/ChangeLog
winsup/cygwin/net.cc

index f089a10..e715d6a 100644 (file)
@@ -1,3 +1,8 @@
+2009-12-15  Corinna Vinschen  <corinna@vinschen.de>
+
+       * net.cc (cygwin_setsockopt): Only skip calling setsockopt(SO_REUSEADDR)
+       on stream sockets under systems supporting enhanced socket security.
+
 2009-12-15  Thomas Wolff  <towo@towo.net>
 
        * fhandler_console.cc (char_command): Fix code to select dim mode 
index 61a9157..a7f913a 100644 (file)
@@ -693,11 +693,12 @@ cygwin_setsockopt (int fd, int level, int optname, const void *optval,
        optname = convert_ws1_ip_optname (optname);
 
       /* On systems supporting "enhanced socket security (2K3 and later),
-        the default behaviour of socket binding is equivalent to the POSIX
-        behaviour with SO_REUSEADDR.  Setting SO_REUSEADDR would only result
-        in wrong behaviour.  See also fhandler_socket::bind(). */
+        the default behaviour of stream socket binding is equivalent to the
+        POSIX behaviour with SO_REUSEADDR.  Setting SO_REUSEADDR would only
+        result in wrong behaviour.  See also fhandler_socket::bind(). */
       if (level == SOL_SOCKET && optname == SO_REUSEADDR
-         && wincap.has_enhanced_socket_security ())
+         && wincap.has_enhanced_socket_security ()
+         && fh->get_socket_type () == SOCK_STREAM)
        res = 0;
       else
        res = setsockopt (fh->get_socket (), level, optname,