The last commit was a bit too ambitious, apparently the content
[privoxy.git] / jcc.c
diff --git a/jcc.c b/jcc.c
index 9364300..d2ae203 100644 (file)
--- a/jcc.c
+++ b/jcc.c
@@ -1,4 +1,4 @@
-const char jcc_rcs[] = "$Id: jcc.c,v 1.191 2008/10/11 18:00:14 fabiankeil Exp $";
+const char jcc_rcs[] = "$Id: jcc.c,v 1.193 2008/10/12 15:57:35 fabiankeil Exp $";
 /*********************************************************************
  *
  * File        :  $Source: /cvsroot/ijbswa/current/jcc.c,v $
@@ -33,6 +33,14 @@ const char jcc_rcs[] = "$Id: jcc.c,v 1.191 2008/10/11 18:00:14 fabiankeil Exp $"
  *
  * Revisions   :
  *    $Log: jcc.c,v $
+ *    Revision 1.193  2008/10/12 15:57:35  fabiankeil
+ *    Fix content length calculation if we read headers
+ *    and the start of the body at once. Now that we have
+ *    FEATURE_CONNECTION_KEEP_ALIVE, it actually matters.
+ *
+ *    Revision 1.192  2008/10/11 18:19:14  fabiankeil
+ *    Even more chat() cosmetics.
+ *
  *    Revision 1.191  2008/10/11 18:00:14  fabiankeil
  *    Reformat some comments in chat().
  *
@@ -2797,6 +2805,7 @@ static void chat(struct client_state *csp)
          }
          else
          {
+            const char *header_start;
             /*
              * We're still looking for the end of the server's header.
              * Buffer up the data we just read.  If that fails, there's
@@ -2811,6 +2820,8 @@ static void chat(struct client_state *csp)
                return;
             }
 
+            header_start = csp->iob->cur;
+
             /* Convert iob into something sed() can digest */
             if (JB_ERR_PARSE == get_server_headers(csp))
             {
@@ -2927,6 +2938,16 @@ static void chat(struct client_state *csp)
 
                byte_count += (size_t)len;
             }
+            else
+            {
+               /*
+                * XXX: the header lenght should probably
+                * be calculated by get_server_headers().
+                */
+               int header_length = csp->iob->cur - header_start;
+               assert(csp->iob->cur > header_start);
+               byte_count += len - header_length;
+            }
 
             /* we're finished with the server's header */