If the --user argument user[.group] contains a dot, always bail out if no group has...
[privoxy.git] / jcc.c
diff --git a/jcc.c b/jcc.c
index 77f2112..9dfe364 100644 (file)
--- a/jcc.c
+++ b/jcc.c
@@ -1,4 +1,4 @@
-const char jcc_rcs[] = "$Id: jcc.c,v 1.337 2011/01/02 11:57:45 fabiankeil Exp $";
+const char jcc_rcs[] = "$Id: jcc.c,v 1.345 2011/04/19 13:00:47 fabiankeil Exp $";
 /*********************************************************************
  *
  * File        :  $Source: /cvsroot/ijbswa/current/jcc.c,v $
@@ -1352,7 +1352,7 @@ static jb_err receive_client_request(struct client_state *csp)
       {
          /*
           * We were able to read a complete
-          * header and can finaly enlist it.
+          * header and can finally enlist it.
           */
          enlist(headers, p);
          freez(p);
@@ -1495,7 +1495,7 @@ static jb_err parse_client_request(struct client_state *csp)
  *                this function is called (via serve()) to handle the
  *                main business of the communication.  This function
  *                returns after dealing with a single request. It can
- *                be called multiple times witht the same client socket
+ *                be called multiple times with the same client socket
  *                if the client is keeping the connection alive.
  *
  *                The decision whether or not a client connection will
@@ -1522,8 +1522,6 @@ static void chat(struct client_state *csp)
    int server_body;
    int ms_iis5_hack = 0;
    unsigned long long byte_count = 0;
-   int forwarded_connect_retries = 0;
-   int max_forwarded_connect_retries = csp->config->forwarded_connect_retries;
    const struct forward_spec *fwd;
    struct http_request *http;
    long len = 0; /* for buffer sizes (and negative error codes) */
@@ -1659,14 +1657,7 @@ static void chat(struct client_state *csp)
       }
 #endif /* def FEATURE_CONNECTION_KEEP_ALIVE */
 
-      while ((csp->server_connection.sfd = forwarded_connect(fwd, http, csp))
-         && (errno == EINVAL)
-         && (forwarded_connect_retries++ < max_forwarded_connect_retries))
-      {
-         log_error(LOG_LEVEL_ERROR,
-            "failed request #%u to connect to %s. Trying again.",
-            forwarded_connect_retries, http->hostport);
-      }
+      csp->server_connection.sfd = forwarded_connect(fwd, http, csp);
 
       if (csp->server_connection.sfd == JB_INVALID_SOCKET)
       {
@@ -1682,8 +1673,6 @@ static void chat(struct client_state *csp)
          else
          {
             rsp = error_response(csp, "connect-failed");
-            log_error(LOG_LEVEL_CONNECT, "connect to: %s failed: %E",
-               http->hostport);
          }
 
          /* Write the answer to the client */
@@ -2401,7 +2390,7 @@ static void chat(struct client_state *csp)
    if (csp->content_length == 0)
    {
       /*
-       * If Privoxy didn't recalculate the Content-Lenght,
+       * If Privoxy didn't recalculate the Content-Length,
        * byte_count is still correct.
        */
       csp->content_length = byte_count;
@@ -2510,7 +2499,8 @@ static void serve(struct client_state *csp)
          && (((csp->flags & CSP_FLAG_SERVER_CONNECTION_KEEP_ALIVE)
                && !(csp->flags & CSP_FLAG_SERVER_SOCKET_TAINTED))
             || (csp->flags & CSP_FLAG_CRUNCHED))
-         && (csp->cfd != JB_INVALID_SOCKET);
+         && (csp->cfd != JB_INVALID_SOCKET)
+         && (csp->flags & CSP_FLAG_CLIENT_CONNECTION_KEEP_ALIVE);
 
       if (continue_chatting && !(csp->flags & CSP_FLAG_CRUNCHED))
       {
@@ -2558,9 +2548,8 @@ static void serve(struct client_state *csp)
             && data_is_available(csp->cfd, (int)client_timeout)
             && socket_is_still_alive(csp->cfd))
          {
-            log_error(LOG_LEVEL_CONNECT, "Client request arrived in "
-               "time or the client closed the connection on socket %d.",
-                csp->cfd);
+            log_error(LOG_LEVEL_CONNECT,
+               "Client request arrived in time on socket %d.", csp->cfd);
             prepare_csp_for_next_request(csp);
          }
          else
@@ -2961,7 +2950,7 @@ int main(int argc, char **argv)
       {
          if (++argc_pos == argc) usage(argv[argc_pos]);
 
-         if ((NULL != (p = strchr(argv[argc_pos], '.'))) && *(p + 1) != '0')
+         if (NULL != (p = strchr(argv[argc_pos], '.')))
          {
             *p++ = '\0';
             if (NULL == (grp = getgrnam(p)))
@@ -3538,7 +3527,7 @@ static void listen_loop(void)
       {
          int child_id;
 
-/* this is a switch () statment in the C preprocessor - ugh */
+/* this is a switch () statement in the C preprocessor - ugh */
 #undef SELECTED_ONE_OPTION
 
 /* Use Pthreads in preference to native code */
@@ -3751,7 +3740,6 @@ static void listen_loop(void)
 #if defined(unix)
    freez(basedir);
 #endif
-   freez(configfile);
 
 #if defined(_WIN32) && !defined(_WIN_CONSOLE)
    /* Cleanup - remove taskbar icon etc. */