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/06/22 00:23:06 UTC

svn commit: r549633 - in /jakarta/httpcomponents/httpcore/trunk/module-nio/src: main/java/org/apache/http/impl/nio/ main/java/org/apache/http/nio/protocol/ main/java/org/apache/http/nio/util/ test/java/org/apache/http/nio/protocol/

Author: olegk
Date: Thu Jun 21 15:23:04 2007
New Revision: 549633

URL: http://svn.apache.org/viewvc?view=rev&rev=549633
Log:
HTTPCORE-83: Fixed synchronization bug in ThrottlingHttpServiceHandler; fixed bug in SharedOutputBuffer

Modified:
    jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/impl/nio/NHttpConnectionBase.java
    jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/nio/protocol/ThrottlingHttpClientHandler.java
    jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/nio/protocol/ThrottlingHttpServiceHandler.java
    jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/nio/util/SharedOutputBuffer.java
    jakarta/httpcomponents/httpcore/trunk/module-nio/src/test/java/org/apache/http/nio/protocol/TestNIOHttp.java

Modified: jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/impl/nio/NHttpConnectionBase.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/impl/nio/NHttpConnectionBase.java?view=diff&rev=549633&r1=549632&r2=549633
==============================================================================
--- jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/impl/nio/NHttpConnectionBase.java (original)
+++ jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/impl/nio/NHttpConnectionBase.java Thu Jun 21 15:23:04 2007
@@ -222,7 +222,7 @@
     }
 
     public boolean isOpen() {
-        return !this.closed;
+        return !this.closed && !this.session.isClosed();
     }
 
     public boolean isStale() {

Modified: jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/nio/protocol/ThrottlingHttpClientHandler.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/nio/protocol/ThrottlingHttpClientHandler.java?view=diff&rev=549633&r1=549632&r2=549633
==============================================================================
--- jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/nio/protocol/ThrottlingHttpClientHandler.java (original)
+++ jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/nio/protocol/ThrottlingHttpClientHandler.java Thu Jun 21 15:23:04 2007
@@ -455,7 +455,9 @@
                         
                         connState.resetInput();
                         connState.resetOutput();
-                        conn.requestOutput();
+                        if (conn.isOpen()) {
+                            conn.requestOutput();
+                        }
                     }
                     
                 } catch (IOException ex) {

Modified: jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/nio/protocol/ThrottlingHttpServiceHandler.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/nio/protocol/ThrottlingHttpServiceHandler.java?view=diff&rev=549633&r1=549632&r2=549633
==============================================================================
--- jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/nio/protocol/ThrottlingHttpServiceHandler.java (original)
+++ jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/nio/protocol/ThrottlingHttpServiceHandler.java Thu Jun 21 15:23:04 2007
@@ -269,9 +269,6 @@
 
                         if (!this.connStrategy.keepAlive(response, context)) {
                             conn.close();
-                        } else {
-                            // Ready for new request
-                            conn.requestInput();
                         }
                     } else {
                         connState.setOutputState(ServerConnState.RESPONSE_SENT);
@@ -312,9 +309,6 @@
 
                     if (!this.connStrategy.keepAlive(response, context)) {
                         conn.close();
-                    } else {
-                        // Ready for new request
-                        conn.requestInput();
                     }
                 } else {
                     connState.setOutputState(ServerConnState.RESPONSE_BODY_STREAM);
@@ -488,6 +482,9 @@
             entity.writeTo(outstream);
             outstream.flush();
             outstream.close();
+        }
+        if (conn.isOpen()) {
+            conn.requestInput();
         }
     }
     

Modified: jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/nio/util/SharedOutputBuffer.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/nio/util/SharedOutputBuffer.java?view=diff&rev=549633&r1=549632&r2=549633
==============================================================================
--- jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/nio/util/SharedOutputBuffer.java (original)
+++ jakarta/httpcomponents/httpcore/trunk/module-nio/src/main/java/org/apache/http/nio/util/SharedOutputBuffer.java Thu Jun 21 15:23:04 2007
@@ -74,7 +74,7 @@
             if (hasData()) {
                 bytesWritten = encoder.write(this.buffer);
                 if (encoder.isCompleted()) {
-                    this.endOfStream = false;
+                    this.endOfStream = true;
                 }
             }
             if (!hasData()) {

Modified: jakarta/httpcomponents/httpcore/trunk/module-nio/src/test/java/org/apache/http/nio/protocol/TestNIOHttp.java
URL: http://svn.apache.org/viewvc/jakarta/httpcomponents/httpcore/trunk/module-nio/src/test/java/org/apache/http/nio/protocol/TestNIOHttp.java?view=diff&rev=549633&r1=549632&r2=549633
==============================================================================
--- jakarta/httpcomponents/httpcore/trunk/module-nio/src/test/java/org/apache/http/nio/protocol/TestNIOHttp.java (original)
+++ jakarta/httpcomponents/httpcore/trunk/module-nio/src/test/java/org/apache/http/nio/protocol/TestNIOHttp.java Thu Jun 21 15:23:04 2007
@@ -157,21 +157,18 @@
             TestNIOHttp test = (TestNIOHttp) en.nextElement();
             suite.addTest(new ServerModeDecorator(test, MODE_BUFFERING, MODE_BUFFERING));            
         }
-        
-        // FIXME Commented out until HTTPCORE-83 is resolved
-        
-//        for (Enumeration en = source.tests(); en.hasMoreElements(); ) {
-//            TestNIOHttp test = (TestNIOHttp) en.nextElement();
-//            suite.addTest(new ServerModeDecorator(test, MODE_THROTTLING, MODE_BUFFERING));            
-//        }
-//        for (Enumeration en = source.tests(); en.hasMoreElements(); ) {
-//            TestNIOHttp test = (TestNIOHttp) en.nextElement();
-//            suite.addTest(new ServerModeDecorator(test, MODE_BUFFERING, MODE_THROTTLING));            
-//        }
-//        for (Enumeration en = source.tests(); en.hasMoreElements(); ) {
-//            TestNIOHttp test = (TestNIOHttp) en.nextElement();
-//            suite.addTest(new ServerModeDecorator(test, MODE_THROTTLING, MODE_THROTTLING));            
-//        }
+        for (Enumeration en = source.tests(); en.hasMoreElements(); ) {
+            TestNIOHttp test = (TestNIOHttp) en.nextElement();
+            suite.addTest(new ServerModeDecorator(test, MODE_THROTTLING, MODE_BUFFERING));            
+        }
+        for (Enumeration en = source.tests(); en.hasMoreElements(); ) {
+            TestNIOHttp test = (TestNIOHttp) en.nextElement();
+            suite.addTest(new ServerModeDecorator(test, MODE_BUFFERING, MODE_THROTTLING));            
+        }
+        for (Enumeration en = source.tests(); en.hasMoreElements(); ) {
+            TestNIOHttp test = (TestNIOHttp) en.nextElement();
+            suite.addTest(new ServerModeDecorator(test, MODE_THROTTLING, MODE_THROTTLING));            
+        }
         return suite;
     }
 
@@ -182,7 +179,7 @@
     protected void setUp() throws Exception {
         HttpParams serverParams = new BasicHttpParams();
         serverParams
-            .setIntParameter(HttpConnectionParams.SO_TIMEOUT, 2000)
+            .setIntParameter(HttpConnectionParams.SO_TIMEOUT, 5000)
             .setIntParameter(HttpConnectionParams.SOCKET_BUFFER_SIZE, 8 * 1024)
             .setBooleanParameter(HttpConnectionParams.STALE_CONNECTION_CHECK, false)
             .setBooleanParameter(HttpConnectionParams.TCP_NODELAY, true)
@@ -192,7 +189,7 @@
         
         HttpParams clientParams = new BasicHttpParams();
         clientParams
-            .setIntParameter(HttpConnectionParams.SO_TIMEOUT, 2000)
+            .setIntParameter(HttpConnectionParams.SO_TIMEOUT, 5000)
             .setIntParameter(HttpConnectionParams.CONNECTION_TIMEOUT, 2000)
             .setIntParameter(HttpConnectionParams.SOCKET_BUFFER_SIZE, 8 * 1024)
             .setBooleanParameter(HttpConnectionParams.STALE_CONNECTION_CHECK, false)