Changing #ifdef _FILENAME_H to FILENAME_H_INCLUDED, to conform to
[privoxy.git] / jcc.c
diff --git a/jcc.c b/jcc.c
index 78ac93e..630aeda 100644 (file)
--- a/jcc.c
+++ b/jcc.c
@@ -1,4 +1,4 @@
-const char jcc_rcs[] = "$Id: jcc.c,v 1.24 2001/07/13 14:00:40 oes Exp $";
+const char jcc_rcs[] = "$Id: jcc.c,v 1.30 2001/07/25 22:57:13 jongfoster Exp $";
 /*********************************************************************
  *
  * File        :  $Source: /cvsroot/ijbswa/current/jcc.c,v $
@@ -33,6 +33,35 @@ const char jcc_rcs[] = "$Id: jcc.c,v 1.24 2001/07/13 14:00:40 oes Exp $";
  *
  * Revisions   :
  *    $Log: jcc.c,v $
+ *    Revision 1.30  2001/07/25 22:57:13  jongfoster
+ *    __BEOS__ no longer overrides FEATURE_PTHREAD.
+ *    This is because FEATURE_PTHREAD will soon be widely used, so I
+ *    want to keep it simple.
+ *
+ *    Revision 1.29  2001/07/24 12:47:06  oes
+ *    Applied BeOS support update by Eugenia
+ *
+ *    Revision 1.28  2001/07/23 13:26:12  oes
+ *    Fixed bug in popup-killing for the first read that caused binary garbage to be sent between headers and body
+ *
+ *    Revision 1.27  2001/07/19 19:09:47  haroon
+ *    - Added code to take care of the situation where while processing the first
+ *      server response (which includes the server header), after finding the end
+ *      of the headers we were not looking past the end of the headers for
+ *      content modification. I enabled it for filter_popups.
+ *      Someone else should look to see if other similar operations should be
+ *      done to the discarded portion of the buffer.
+ *
+ *      Note 2001/07/20: No, the other content modification mechanisms will process
+ *                       the whole iob later anyway. --oes
+ *
+ *    Revision 1.26  2001/07/18 12:31:36  oes
+ *    cosmetics
+ *
+ *    Revision 1.25  2001/07/15 19:43:49  jongfoster
+ *    Supports POSIX threads.
+ *    Also removed some unused #includes.
+ *
  *    Revision 1.24  2001/07/13 14:00:40  oes
  *     - Generic content modification scheme:
  *       Each feature has its own applicability flag that is set
@@ -891,20 +920,18 @@ static void chat(struct client_state *csp)
 
          /*
           * If this is an SSL connection or we're in the body
-          * of the server document, just write it to the client.
+          * of the server document, just write it to the client,
+          * unless we need to buffer the body for later content-filtering
           */
 
          if (server_body || http->ssl)
          {
-
             if (content_filter)
             {
-               add_to_iob(csp, buf, n); /* Buffer the body for filtering */
+               add_to_iob(csp, buf, n); 
             }
-
             else
             {
-               /* just write */
                if (write_socket(csp->cfd, buf, n) != n)
                {
                   log_error(LOG_LEVEL_ERROR, "write to client failed: %E");
@@ -986,6 +1013,11 @@ static void chat(struct client_state *csp)
                 block_popups)                     /* Policy allows */
             {
                block_popups_now = 1;
+               /*
+                * Filter the part of the body that came in the same read
+                * as the last headers:
+                */
+               filter_popups(csp->iob->cur, csp->iob->eod - csp->iob->cur);
             }
 
 #endif /* def KILLPOPUPS */
@@ -1361,6 +1393,7 @@ static void listen_loop(void)
             pthread_attr_t attrs;
 
             pthread_attr_init(&attrs);
+            pthread_attr_setdetachstate(&attrs, PTHREAD_CREATE_DETACHED);
             child_id = (pthread_create(&the_thread, &attrs,
                (void*)serve, csp) ? -1 : 0);
             pthread_attr_destroy(&attrs);