diff options
Diffstat (limited to 'java/ssl/jdk1.4/IceSSL/TransceiverI.java')
-rw-r--r-- | java/ssl/jdk1.4/IceSSL/TransceiverI.java | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/java/ssl/jdk1.4/IceSSL/TransceiverI.java b/java/ssl/jdk1.4/IceSSL/TransceiverI.java index dfd207532cd..b72716942ba 100644 --- a/java/ssl/jdk1.4/IceSSL/TransceiverI.java +++ b/java/ssl/jdk1.4/IceSSL/TransceiverI.java @@ -116,6 +116,7 @@ final class TransceiverI implements IceInternal.Transceiver public void write(IceInternal.BasicStream stream, int timeout) + throws IceInternal.LocalExceptionWrapper { java.nio.ByteBuffer buf = stream.prepareWrite(); @@ -181,9 +182,15 @@ final class TransceiverI implements IceInternal.Transceiver { if(IceInternal.Network.connectionLost(ex)) { + // + // Java's SSL implementation might have successfully sent the + // packet but then detected loss of connection and raised an + // exception. As a result, we cannot be sure that it is safe + // to retry in this situation, so we raise LocalExceptionWrapper. + // Ice.ConnectionLostException se = new Ice.ConnectionLostException(); se.initCause(ex); - throw se; + throw new IceInternal.LocalExceptionWrapper(se, false); } Ice.SocketException se = new Ice.SocketException(); |