summaryrefslogtreecommitdiff
path: root/java/ssl/jdk1.4/IceSSL/AcceptorI.java
diff options
context:
space:
mode:
authorBenoit Foucher <benoit@zeroc.com>2007-05-29 13:04:38 +0000
committerBenoit Foucher <benoit@zeroc.com>2007-05-29 13:04:38 +0000
commit34509f307ce087d0a64063b92b095d3d960faaf2 (patch)
tree5b69b1d3209aa4826b00f8ce3c2996a99f515427 /java/ssl/jdk1.4/IceSSL/AcceptorI.java
parentMoved setting of SO_REUSEADDR and added comment (diff)
downloadice-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.java17
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 =