diff options
author | Benoit Foucher <benoit@zeroc.com> | 2007-05-29 13:04:38 +0000 |
---|---|---|
committer | Benoit Foucher <benoit@zeroc.com> | 2007-05-29 13:04:38 +0000 |
commit | 34509f307ce087d0a64063b92b095d3d960faaf2 (patch) | |
tree | 5b69b1d3209aa4826b00f8ce3c2996a99f515427 /java/ssl/jdk1.4/IceSSL/AcceptorI.java | |
parent | Moved setting of SO_REUSEADDR and added comment (diff) | |
download | ice-34509f307ce087d0a64063b92b095d3d960faaf2.tar.bz2 ice-34509f307ce087d0a64063b92b095d3d960faaf2.tar.xz ice-34509f307ce087d0a64063b92b095d3d960faaf2.zip |
Set SO_REUSEADDR for server sockets. Bug 2079.
Diffstat (limited to 'java/ssl/jdk1.4/IceSSL/AcceptorI.java')
-rw-r--r-- | java/ssl/jdk1.4/IceSSL/AcceptorI.java | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/java/ssl/jdk1.4/IceSSL/AcceptorI.java b/java/ssl/jdk1.4/IceSSL/AcceptorI.java index f9283d0c676..a77b7dd32db 100644 --- a/java/ssl/jdk1.4/IceSSL/AcceptorI.java +++ b/java/ssl/jdk1.4/IceSSL/AcceptorI.java @@ -294,6 +294,23 @@ class AcceptorI implements IceInternal.Acceptor } java.net.InetSocketAddress iface = IceInternal.Network.getAddress(host, port); _fd = (javax.net.ssl.SSLServerSocket)factory.createServerSocket(port, _backlog, iface.getAddress()); + if(!System.getProperty("os.name").startsWith("Windows")) + { + // + // Enable SO_REUSEADDR on Unix platforms to allow + // re-using the socket even if it's in the TIME_WAIT + // state. On Windows, this doesn't appear to be + // necessary and enabling SO_REUSEADDR would actually + // not be a good thing since it allows a second + // process to bind to an address even it's already + // bound by another process. + // + // TODO: using SO_EXCLUSIVEADDRUSE on Windows would + // probably be better but it's only supported by recent + // Windows versions (XP SP2, Windows Server 2003). + // + _fd.setReuseAddress(true); + } _addr = (java.net.InetSocketAddress)_fd.getLocalSocketAddress(); int verifyPeer = |