diff options
author | Mark Spruiell <mes@zeroc.com> | 2007-05-17 23:35:27 +0000 |
---|---|---|
committer | Mark Spruiell <mes@zeroc.com> | 2007-05-17 23:35:27 +0000 |
commit | 15f55d0f264f48f5592f4f4589fad7d8dc51f571 (patch) | |
tree | 1b3d4d92a53818e91caa2322a640b592d38647fa /java/ssl/jdk1.5/IceSSL/TransceiverI.java | |
parent | Split DispatchStatus into dispatch status and reply status (bug #2150) (diff) | |
download | ice-15f55d0f264f48f5592f4f4589fad7d8dc51f571.tar.bz2 ice-15f55d0f264f48f5592f4f4589fad7d8dc51f571.tar.xz ice-15f55d0f264f48f5592f4f4589fad7d8dc51f571.zip |
bug 1582
Diffstat (limited to 'java/ssl/jdk1.5/IceSSL/TransceiverI.java')
-rw-r--r-- | java/ssl/jdk1.5/IceSSL/TransceiverI.java | 25 |
1 files changed, 17 insertions, 8 deletions
diff --git a/java/ssl/jdk1.5/IceSSL/TransceiverI.java b/java/ssl/jdk1.5/IceSSL/TransceiverI.java index ce59b5a7792..1cec3f88ec2 100644 --- a/java/ssl/jdk1.5/IceSSL/TransceiverI.java +++ b/java/ssl/jdk1.5/IceSSL/TransceiverI.java @@ -586,22 +586,31 @@ final class TransceiverI implements IceInternal.Transceiver case NEED_UNWRAP: { // - // The engine needs to receive a message. If we don't have any - // data left in _netInput, then read some more. + // The engine needs more data. We might already have enough data in + // the _netInput buffer to satisfy the engine. If not, the engine + // responds with BUFFER_UNDERFLOW and we'll read from the socket. // _netInput.flip(); - if(!_netInput.hasRemaining()) - { - _netInput.clear(); - read(timeout); - _netInput.flip(); - } result = _engine.unwrap(_netInput, _appInput); _netInput.compact(); // // FINISHED is only returned from wrap or unwrap, not from engine.getHandshakeResult(). // status = result.getHandshakeStatus(); + switch(result.getStatus()) + { + case BUFFER_OVERFLOW: + assert(false); + break; + case BUFFER_UNDERFLOW: + assert(status == javax.net.ssl.SSLEngineResult.HandshakeStatus.NEED_UNWRAP); + read(timeout); + break; + case CLOSED: + throw new Ice.ConnectionLostException(); + case OK: + break; + } break; } case NEED_WRAP: |