diff options
Diffstat (limited to 'java/src/IceInternal/TcpTransceiver.java')
-rw-r--r-- | java/src/IceInternal/TcpTransceiver.java | 33 |
1 files changed, 19 insertions, 14 deletions
diff --git a/java/src/IceInternal/TcpTransceiver.java b/java/src/IceInternal/TcpTransceiver.java index 17053a464d9..a7be7d9577e 100644 --- a/java/src/IceInternal/TcpTransceiver.java +++ b/java/src/IceInternal/TcpTransceiver.java @@ -27,19 +27,24 @@ final class TcpTransceiver implements Transceiver _logger.trace(_traceLevels.networkCat, s); } - assert(_fd != null); - try - { - _fd.close(); - _fd = null; - } - catch(java.io.IOException ex) - { - _fd = null; - Ice.SocketException se = new Ice.SocketException(); - se.initCause(ex); - throw se; - } + synchronized(this) + { + assert(_fd != null); + try + { + _fd.close(); + } + catch(java.io.IOException ex) + { + Ice.SocketException se = new Ice.SocketException(); + se.initCause(ex); + throw se; + } + finally + { + _fd = null; + } + } } public void @@ -345,7 +350,7 @@ final class TcpTransceiver implements Transceiver _desc = Network.fdToString(_fd); } - protected void + protected synchronized void finalize() throws Throwable { |