Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 16 Feb 2006 22:44:15 +0100
From:      Arne Juul <Arne.Juul@europe.yahoo-inc.com>
To:        freebsd-java@freebsd.org
Subject:   SO_REUSEADDR should not also mean SO_REUSEPORT
Message-ID:  <43F4F22F.1060402@europe.yahoo-inc.com>

next in thread | raw e-mail | index | archive | help
Description by Håvard Pettersen 
(Havard.Pettersen@europe.yahoo-inc.com) 	> Ticket Opened: 2006-02-02 
13:37 PST
 >
 > In the FreeBSD Java port, setting the reuse_address feature on a
 > server socket also sets the reuse_port feature, which is not a good
 > thing, since it allows multiple server sockets to bind to the same
 > local port.
 >
 > A possible work-around is to also disable reuse_address, but this
 > will disallow listening to an unused local port if a connection
 > established against that port is still active, which is not good
 > either.


I don't know why this code was put into the bsd jdk patches, it just
seems plain wrong to me.  It makes java subtly non-portable in a very
strange manner; I suggest this code is removed.  Below is the patch
I'm currently using :-)


--- ../../j2se/src/solaris/native/java/net/net_util_md.c.orig   Thu Feb 
16 20:24:41 2006
+++ ../../j2se/src/solaris/native/java/net/net_util_md.c        Thu Feb 
16 20:23:24 2006
@@ -1019,17 +1019,20 @@
                 *bufsize = maxsockbuf;
             }
          }
      }

+#if 0
+this is just plain wrong!
      /*
       * If SO_REUSEADDR option requested, unconditionally set SO_REUSEPORT.
       */
      if (level == SOL_SOCKET && opt == SO_REUSEADDR) {
         addopt = SO_REUSEPORT;
         setsockopt(fd, level, addopt, arg, len);
      }
+#endif

      /*
       * Don't allow SO_LINGER value to be too big.
       * Current max value (240) is empiric value based on tcp_timer.h's
       * constant TCP_LINGERTIME, which was doubled.


   -  Arne H. J.




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?43F4F22F.1060402>