You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hc.apache.org by ol...@apache.org on 2007/09/08 18:41:26 UTC

svn commit: r573880 - in /jakarta/httpcomponents/httpcore/trunk: ./ module-main/src/main/java/org/apache/http/ module-main/src/main/java/org/apache/http/impl/entity/ module-main/src/test/java/org/apache/http/impl/ module-main/src/test/java/org/apache/h...

Author: olegk
Date: Sat Sep  8 09:41:24 2007
New Revision: 573880

URL: http://svn.apache.org/viewvc?rev=573880&view=rev
Log:
HTTPCORE-114: Fixed incorrect handling of the end-of-stream condition in SSLIOSession; a number incremental improvements in SSLIOSession

Modified:
    jakarta/httpcomponents/httpcore/trunk/RELEASE_NOTES.txt
    jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/HttpVersion.java
    jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/impl/entity/StrictContentLengthStrategy.java
    jakarta/httpcomponents/httpcore/trunk/module-main/src/test/java/org/apache/http/impl/TestBasicRequest.java
    jakarta/httpcomponents/httpcore/trunk/module-main/src/test/java/org/apache/http/message/TestBasicLineParser.java
    jakarta/httpcomponents/httpcore/trunk/module-niossl/src/main/java/org/apache/http/impl/nio/reactor/SSLClientIOEventDispatch.java
    jakarta/httpcomponents/httpcore/trunk/module-niossl/src/main/java/org/apache/http/impl/nio/reactor/SSLIOSession.java

Modified: jakarta/httpcomponents/httpcore/trunk/RELEASE_NOTES.txt
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpcore/trunk/RELEASE_NOTES.txt?rev=573880&r1=573879&r2=573880&view=diff
==============================================================================
--- jakarta/httpcomponents/httpcore/trunk/RELEASE_NOTES.txt (original)
+++ jakarta/httpcomponents/httpcore/trunk/RELEASE_NOTES.txt Sat Sep  8 09:41:24 2007
@@ -1,5 +1,8 @@
 Changes since release 4.0 Alpha 5
 
+* [HTTPCORE-114]: Fixed incorrect handling of the end-of-stream condition in SSLIOSession. 
+  Oleg Kalnichevski <olegk at apache.org>
+
 * [HTTPCORE-110] refactored message parsing and formatting logic
   Contributed by Roland Weber <rolandw at apache.org>
 

Modified: jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/HttpVersion.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/HttpVersion.java?rev=573880&r1=573879&r2=573880&view=diff
==============================================================================
--- jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/HttpVersion.java (original)
+++ jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/HttpVersion.java Sat Sep  8 09:41:24 2007
@@ -32,7 +32,6 @@
 package org.apache.http;
 
 import java.io.Serializable;
-import org.apache.http.util.CharArrayBuffer;
 
 /**
  * Represents an HTTP version, as specified in RFC 2616.

Modified: jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/impl/entity/StrictContentLengthStrategy.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/impl/entity/StrictContentLengthStrategy.java?rev=573880&r1=573879&r2=573880&view=diff
==============================================================================
--- jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/impl/entity/StrictContentLengthStrategy.java (original)
+++ jakarta/httpcomponents/httpcore/trunk/module-main/src/main/java/org/apache/http/impl/entity/StrictContentLengthStrategy.java Sat Sep  8 09:41:24 2007
@@ -35,7 +35,6 @@
 import org.apache.http.HttpException;
 import org.apache.http.HttpMessage;
 import org.apache.http.HttpVersion;
-import org.apache.http.ProtocolVersion;
 import org.apache.http.ProtocolException;
 import org.apache.http.entity.ContentLengthStrategy;
 import org.apache.http.protocol.HTTP;

Modified: jakarta/httpcomponents/httpcore/trunk/module-main/src/test/java/org/apache/http/impl/TestBasicRequest.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpcore/trunk/module-main/src/test/java/org/apache/http/impl/TestBasicRequest.java?rev=573880&r1=573879&r2=573880&view=diff
==============================================================================
--- jakarta/httpcomponents/httpcore/trunk/module-main/src/test/java/org/apache/http/impl/TestBasicRequest.java (original)
+++ jakarta/httpcomponents/httpcore/trunk/module-main/src/test/java/org/apache/http/impl/TestBasicRequest.java Sat Sep  8 09:41:24 2007
@@ -36,7 +36,6 @@
 
 import org.apache.http.HttpRequest;
 import org.apache.http.HttpVersion;
-import org.apache.http.ProtocolVersion;
 import org.apache.http.message.BasicHttpRequest;
 import org.apache.http.params.HttpProtocolParams;
 

Modified: jakarta/httpcomponents/httpcore/trunk/module-main/src/test/java/org/apache/http/message/TestBasicLineParser.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpcore/trunk/module-main/src/test/java/org/apache/http/message/TestBasicLineParser.java?rev=573880&r1=573879&r2=573880&view=diff
==============================================================================
--- jakarta/httpcomponents/httpcore/trunk/module-main/src/test/java/org/apache/http/message/TestBasicLineParser.java (original)
+++ jakarta/httpcomponents/httpcore/trunk/module-main/src/test/java/org/apache/http/message/TestBasicLineParser.java Sat Sep  8 09:41:24 2007
@@ -35,7 +35,6 @@
 import junit.framework.TestSuite;
 
 import org.apache.http.HttpVersion;
-import org.apache.http.ProtocolVersion;
 import org.apache.http.ParseException;
 import org.apache.http.RequestLine;
 import org.apache.http.StatusLine;

Modified: jakarta/httpcomponents/httpcore/trunk/module-niossl/src/main/java/org/apache/http/impl/nio/reactor/SSLClientIOEventDispatch.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpcore/trunk/module-niossl/src/main/java/org/apache/http/impl/nio/reactor/SSLClientIOEventDispatch.java?rev=573880&r1=573879&r2=573880&view=diff
==============================================================================
--- jakarta/httpcomponents/httpcore/trunk/module-niossl/src/main/java/org/apache/http/impl/nio/reactor/SSLClientIOEventDispatch.java (original)
+++ jakarta/httpcomponents/httpcore/trunk/module-niossl/src/main/java/org/apache/http/impl/nio/reactor/SSLClientIOEventDispatch.java Sat Sep  8 09:41:24 2007
@@ -130,7 +130,7 @@
                 SSL_SESSION);
         try {
             synchronized (sslSession) {
-                while (sslSession.isAppInputReady()) {
+                if (sslSession.isAppInputReady()) {
                     conn.consumeInput(this.handler);
                 }
                 sslSession.inboundTransport();

Modified: jakarta/httpcomponents/httpcore/trunk/module-niossl/src/main/java/org/apache/http/impl/nio/reactor/SSLIOSession.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpcore/trunk/module-niossl/src/main/java/org/apache/http/impl/nio/reactor/SSLIOSession.java?rev=573880&r1=573879&r2=573880&view=diff
==============================================================================
--- jakarta/httpcomponents/httpcore/trunk/module-niossl/src/main/java/org/apache/http/impl/nio/reactor/SSLIOSession.java (original)
+++ jakarta/httpcomponents/httpcore/trunk/module-niossl/src/main/java/org/apache/http/impl/nio/reactor/SSLIOSession.java Sat Sep  8 09:41:24 2007
@@ -222,14 +222,7 @@
     }
 
     private int receiveEncryptedData() throws IOException {
-        int bytesRead = this.session.channel().read(this.inEncrypted);
-        if (bytesRead == -1) {
-            this.session.close();
-        }
-        if (this.sslEngine.isInboundDone() && this.sslEngine.isOutboundDone()) {
-            this.session.close();
-        }
-        return bytesRead;
+        return this.session.channel().read(this.inEncrypted);
     }
     
     private boolean decryptData() throws SSLException {
@@ -252,11 +245,11 @@
         int bytesRead = receiveEncryptedData();
         if (bytesRead == -1) {
             this.status = CLOSED;
-            return false;
         }
         doHandshake();
         decryptData();
-        return this.inPlain.position() > 0;
+        // Some decrypted data is available or at the end of stream
+        return this.inPlain.position() > 0 || this.status == CLOSED;
     }
     
     public synchronized boolean isAppOutputReady() throws IOException {
@@ -265,7 +258,11 @@
     }
     
     public synchronized void inboundTransport() throws IOException {
-        updateEventMask();
+        if (this.status == CLOSED) {
+            this.session.close();
+        } else {
+            updateEventMask();
+        }
     }
     
     public synchronized void outboundTransport() throws IOException {