Added the tests - but then tried few more changes and broke them again. Fix it back.
authorcostin <costin@13f79535-47bb-0310-9956-ffa450edef68>
Fri, 4 Dec 2009 08:03:16 +0000 (08:03 +0000)
committercostin <costin@13f79535-47bb-0310-9956-ffa450edef68>
Fri, 4 Dec 2009 08:03:16 +0000 (08:03 +0000)
git-svn-id: https://svn.apache.org/repos/asf/tomcat/trunk@887093 13f79535-47bb-0310-9956-ffa450edef68

modules/tomcat-lite/java/org/apache/tomcat/lite/http/Http11Connection.java
modules/tomcat-lite/java/org/apache/tomcat/lite/http/HttpConnector.java
modules/tomcat-lite/test/org/apache/tomcat/lite/http/HttpChannelInMemoryTest.java
modules/tomcat-lite/test/org/apache/tomcat/lite/http/HttpsTest.java

index c49529a..f1bbba6 100644 (file)
@@ -64,11 +64,12 @@ public class Http11Connection extends HttpConnection {
     
     public Http11Connection(HttpConnector httpConnector) {
         this.httpConnector = httpConnector;
-        debug = true; //httpConnector.debug;
+        if (httpConnector != null) {
+            debug = httpConnector.debugHttp;
+        }
     }
 
     public void beforeRequest() {
-        log.info("Before request");
         activeHttp = null;
         endSent = false;
         keepAlive = true;
@@ -269,8 +270,9 @@ public class Http11Connection extends HttpConnection {
     }
 
     void closeStreamOnEnd(String cause) {
-        if (debug) 
+        if (debug) {
             log.info("Not reusing connection because: " + cause);
+        }
         keepAlive = false;
     }
 
@@ -411,7 +413,7 @@ public class Http11Connection extends HttpConnection {
             } 
 
         } else {
-            receiveBodyState.noBody = http.getResponse().hasBody();
+            receiveBodyState.noBody = !http.getResponse().hasBody();
             
             updateKeepAlive(http.getResponse().getMimeHeaders(), false);
             
@@ -751,6 +753,12 @@ public class Http11Connection extends HttpConnection {
                 http.getRequest());
 
 
+        CBuffer method = http.getRequest().method();
+        if (method.equals("GET") || method.equals("HEAD")) {
+            // TODO: add the others
+            sendBodyState.noBody = true;
+        }
+        
         // 1.0: The presence of an entity body in a request is signaled by 
         // the inclusion of a Content-Length header field in the request 
         // message headers. HTTP/1.0 requests containing an entity body 
@@ -953,13 +961,14 @@ public class Http11Connection extends HttpConnection {
         // ( like 'upgrade')
 
         CBuffer value = headers.getHeader(CONNECTION);
-        String conHeader = (value == null) ? null : value.toString();
-        if (conHeader != null) {
-            if (CLOSE.equalsIgnoreCase(conHeader)) {
+        // TODO: split it by space
+        if (value != null) {
+            value.toLower();
+            if (value.indexOf(CLOSE) >= 0) {
                 // 1.1 ( but we accept it for 1.0 too )
                 closeStreamOnEnd("connection close");
             }
-            if (http10 && conHeader.indexOf(KEEPALIVE_S) < 0) {
+            if (http10 && value.indexOf(KEEPALIVE_S) < 0) {
                 // Keep-Alive required for http/1.0
                 closeStreamOnEnd("connection != keep alive");
             }
@@ -1362,6 +1371,7 @@ public class Http11Connection extends HttpConnection {
             chunked = false;
             remaining = 0; 
             contentLength = -1;
+            noBody = false;
         }
         public boolean isContentDelimited() {
             return chunked || contentLength >= 0;
index 3050bf1..37279e3 100644 (file)
@@ -15,10 +15,8 @@ import java.util.concurrent.atomic.AtomicInteger;
 import java.util.logging.Logger;
 
 import org.apache.tomcat.lite.http.HttpChannel.HttpService;
-import org.apache.tomcat.lite.http.SpdyConnection.SpdyConnectionManager;
 import org.apache.tomcat.lite.io.BBuffer;
 import org.apache.tomcat.lite.io.DumpChannel;
-import org.apache.tomcat.lite.io.BBucket;
 import org.apache.tomcat.lite.io.IOBuffer;
 import org.apache.tomcat.lite.io.IOChannel;
 import org.apache.tomcat.lite.io.IOConnector;
@@ -376,7 +374,6 @@ public class HttpConnector {
     private class AcceptorCallback implements IOConnector.ConnectedCallback {
         @Override
         public void handleConnected(IOChannel accepted) throws IOException {
-            System.err.println("ACCEPTED " + accepted);
             handleAccepted(accepted);
         }
     }
index 7f50b57..76580a1 100644 (file)
@@ -198,7 +198,7 @@ public class HttpChannelInMemoryTest extends TestCase {
         MultiMap headers = http.getRequest().getMimeHeaders();
         CBuffer cookie = headers.getHeader("Cookie");
         CBuffer conn = headers.getHeader("Connection");
-        assertEquals(conn.toString(), "Close");
+        assertEquals(conn.toString(), "close");
         assertEquals(cookie.toString(), "1234 456");
         
         assertEquals(http.conn.headRecvBuf.toString(), 
index eb2f9fe..b365e95 100644 (file)
@@ -120,6 +120,7 @@ public class HttpsTest extends TestCase {
         SslConnector sslCon = new SslConnector();
         httpClient = new HttpConnector(sslCon);
         HttpRequest client = httpClient.request("www.google.com", 443);
+        client.getHttpChannel().setIOTimeout(2000);
         client.setRequestURI("/accounts/ServiceLogin");
         client.send();