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;
}
void closeStreamOnEnd(String cause) {
- if (debug)
+ if (debug) {
log.info("Not reusing connection because: " + cause);
+ }
keepAlive = false;
}
}
} else {
- receiveBodyState.noBody = http.getResponse().hasBody();
+ receiveBodyState.noBody = !http.getResponse().hasBody();
updateKeepAlive(http.getResponse().getMimeHeaders(), false);
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
// ( 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");
}
chunked = false;
remaining = 0;
contentLength = -1;
+ noBody = false;
}
public boolean isContentDelimited() {
return chunked || contentLength >= 0;
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;
private class AcceptorCallback implements IOConnector.ConnectedCallback {
@Override
public void handleConnected(IOChannel accepted) throws IOException {
- System.err.println("ACCEPTED " + accepted);
handleAccepted(accepted);
}
}
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(),