SSL: Buffered data lost, if connection closed on server side
------------------------------------------------------------

                 Key: HTTPCORE-123
                 URL: https://issues.apache.org/jira/browse/HTTPCORE-123
             Project: HttpComponents Core
          Issue Type: Bug
          Components: HttpCore NIO
    Affects Versions: 4.0-alpha6
         Environment: jre1.5.0_06, apache2
            Reporter: Risto ReinpƵld


In case of 'Connection: close' connections to https web server the connection 
might be terminated on server side before data has reached the client 
application. Step by step scenario.

1. SSLIOSession.isAppInputReady receives encrypted data and sees end of stream 
(status = CLOSED);
2. SSLIOSession.decryptData decypted the received data and puts into inPlain 
buffer;
3. NHttpClientHandler.inputReady is called. App calls decoder.read, but decoder 
will not get the data in SSLIOSession.inPLain, because of the check in 
SSLIOSession.unwrap:

        if (this.status != ACTIVE) {
            return -1;
        }

Moving this after inPlain.position() > 0 check would quickfix the problem, but 
maybe it not the best way of doing it.

Index: SSLIOSession.java
===================================================================
--- SSLIOSession.java   (revision 582811)
+++ SSLIOSession.java   (working copy)
@@ -298,9 +298,6 @@
         if (dst == null) {
             throw new IllegalArgumentException("Byte buffer may not be null");
         }
-        if (this.status != ACTIVE) {
-            return -1;
-        }
         if (this.inPlain.position() > 0) {
             this.inPlain.flip();
             int n = Math.min(this.inPlain.remaining(), dst.remaining());
@@ -309,6 +306,8 @@
             }
             this.inPlain.compact();
             return n;
+        } else if (this.status != ACTIVE) {
+            return -1;
         } else {
             return 0;
         }

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to