Take the latency into account when evaluating whether or not to reuse a connection.
[privoxy.git] / parsers.c
index 1fc52c7..ef0fde2 100644 (file)
--- a/parsers.c
+++ b/parsers.c
@@ -1,4 +1,4 @@
-const char parsers_rcs[] = "$Id: parsers.c,v 1.194 2009/07/11 11:16:19 fabiankeil Exp $";
+const char parsers_rcs[] = "$Id: parsers.c,v 1.196 2009/07/11 11:20:12 fabiankeil Exp $";
 /*********************************************************************
  *
  * File        :  $Source: /cvsroot/ijbswa/current/parsers.c,v $
@@ -1691,6 +1691,14 @@ static jb_err client_keep_alive(struct client_state *csp, char **header)
    unsigned int keep_alive_timeout;
    const char *timeout_position = strstr(*header, ": ");
 
+   if (!(csp->config->feature_flags & RUNTIME_FEATURE_CONNECTION_KEEP_ALIVE))
+   {
+      log_error(LOG_LEVEL_HEADER,
+         "keep-alive support is disabled. Crunching: %s.", *header);
+      freez(*header);
+      return JB_ERR_OK;
+   }
+
    if ((NULL == timeout_position)
     || (1 != sscanf(timeout_position, ": %u", &keep_alive_timeout)))
    {
@@ -3487,17 +3495,8 @@ static jb_err server_connection_adder(struct client_state *csp)
 #ifdef FEATURE_CONNECTION_KEEP_ALIVE
     && !(csp->flags & CSP_FLAG_SERVER_SOCKET_TAINTED)
 #endif
-    && (csp->http->status == 200)
        )
    {
-      /*
-       * XXX: not doing this for status codes other than 200 works
-       * around problems with broken servers that will keep the
-       * connection open, but terminate the connection when the
-       * next request arrives. Once we are able to figure out which
-       * requests are safe to send again, this will probably no
-       * longer be necessary.
-       */
       log_error(LOG_LEVEL_HEADER, "A HTTP/1.1 response "
          "without Connection header implies keep-alive.");
       csp->flags |= CSP_FLAG_SERVER_CONNECTION_KEEP_ALIVE;