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 2013/12/13 10:04:33 UTC

svn commit: r1550666 - in /httpcomponents/httpcore/trunk: RELEASE_NOTES.txt httpcore-nio/src/main/java/org/apache/http/impl/nio/DefaultNHttpClientConnection.java httpcore-nio/src/main/java/org/apache/http/impl/nio/DefaultNHttpServerConnection.java

Author: olegk
Date: Fri Dec 13 09:04:32 2013
New Revision: 1550666

URL: http://svn.apache.org/r1550666
Log:
HTTPCORE-367: Reverted revision 1480321: Call #inputReady as long as there is interest in input, decoder is not done and there is buffered session data

Modified:
    httpcomponents/httpcore/trunk/RELEASE_NOTES.txt
    httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/impl/nio/DefaultNHttpClientConnection.java
    httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/impl/nio/DefaultNHttpServerConnection.java

Modified: httpcomponents/httpcore/trunk/RELEASE_NOTES.txt
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/RELEASE_NOTES.txt?rev=1550666&r1=1550665&r2=1550666&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/RELEASE_NOTES.txt (original)
+++ httpcomponents/httpcore/trunk/RELEASE_NOTES.txt Fri Dec 13 09:04:32 2013
@@ -1,6 +1,10 @@
 Changes since 4.3
 -------------------
 
+* [HTTPCORE-367] (Regression) Non-blocking connections can enter a tight loop while waiting 
+  for a chunk header split across multiple TCP frames.
+  Contributed by Oleg Kalnichevski <olegk at apache.org>
+
 * [HTTPCORE-366] Non-blocking SSLIOSession can enter an infinite loop if the underlying
   channel receives incoming data simultaneously with inactivity timeout.
   Contributed by Oleg Kalnichevski <olegk at apache.org>

Modified: httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/impl/nio/DefaultNHttpClientConnection.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/impl/nio/DefaultNHttpClientConnection.java?rev=1550666&r1=1550665&r2=1550666&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/impl/nio/DefaultNHttpClientConnection.java (original)
+++ httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/impl/nio/DefaultNHttpClientConnection.java Fri Dec 13 09:04:32 2013
@@ -260,20 +260,12 @@ public class DefaultNHttpClientConnectio
                     handler.endOfInput(this);
                 }
             }
-            if (this.contentDecoder != null) {
-                // Loop until there is interest in input,
-                // decoder is not done and there is buffered session data
-                while ((this.session.getEventMask() & SelectionKey.OP_READ) > 0) {
-                    handler.inputReady(this, this.contentDecoder);
-                    if (this.contentDecoder.isCompleted()) {
-                        // Response entity received
-                        // Ready to receive a new response
-                        resetInput();
-                        break;
-                    }
-                    if (!this.inbuf.hasData()) {
-                        break;
-                    }
+            if (this.contentDecoder != null && (this.session.getEventMask() & SelectionKey.OP_READ) > 0) {
+                handler.inputReady(this, this.contentDecoder);
+                if (this.contentDecoder.isCompleted()) {
+                    // Response entity received
+                    // Ready to receive a new response
+                    resetInput();
                 }
             }
         } catch (final HttpException ex) {

Modified: httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/impl/nio/DefaultNHttpServerConnection.java
URL: http://svn.apache.org/viewvc/httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/impl/nio/DefaultNHttpServerConnection.java?rev=1550666&r1=1550665&r2=1550666&view=diff
==============================================================================
--- httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/impl/nio/DefaultNHttpServerConnection.java (original)
+++ httpcomponents/httpcore/trunk/httpcore-nio/src/main/java/org/apache/http/impl/nio/DefaultNHttpServerConnection.java Fri Dec 13 09:04:32 2013
@@ -279,20 +279,12 @@ public class DefaultNHttpServerConnectio
                     handler.endOfInput(this);
                 }
             }
-            if (this.contentDecoder != null) {
-                // Loop until there is interest in input,
-                // decoder is not done and there is buffered session data
-                while ((this.session.getEventMask() & SelectionKey.OP_READ) > 0) {
-                    handler.inputReady(this, this.contentDecoder);
-                    if (this.contentDecoder.isCompleted()) {
-                        // Response entity received
-                        // Ready to receive a new response
-                        resetInput();
-                        break;
-                    }
-                    if (!this.inbuf.hasData()) {
-                        break;
-                    }
+            if (this.contentDecoder != null && (this.session.getEventMask() & SelectionKey.OP_READ) > 0) {
+                handler.inputReady(this, this.contentDecoder);
+                if (this.contentDecoder.isCompleted()) {
+                    // Request entity received
+                    // Ready to receive a new request
+                    resetInput();
                 }
             }
         } catch (final HttpException ex) {