Allow to limit the number of of client connections.
[privoxy.git] / loaders.c
index fa9a891..e7dbbe4 100644 (file)
--- a/loaders.c
+++ b/loaders.c
@@ -1,4 +1,4 @@
-const char loaders_rcs[] = "$Id: loaders.c,v 1.69 2008/09/21 13:36:52 fabiankeil Exp $";
+const char loaders_rcs[] = "$Id: loaders.c,v 1.71 2009/03/04 18:24:47 fabiankeil Exp $";
 /*********************************************************************
  *
  * File        :  $Source: /cvsroot/ijbswa/current/loaders.c,v $
@@ -8,7 +8,7 @@ const char loaders_rcs[] = "$Id: loaders.c,v 1.69 2008/09/21 13:36:52 fabiankeil
  *                the list of active loaders, and to automatically
  *                unload files that are no longer in use.
  *
- * Copyright   :  Written by and Copyright (C) 2001-2007 the SourceForge
+ * Copyright   :  Written by and Copyright (C) 2001-2009 the
  *                Privoxy team. http://www.privoxy.org/
  *
  *                Based on the Internet Junkbuster originally written
@@ -35,6 +35,13 @@ const char loaders_rcs[] = "$Id: loaders.c,v 1.69 2008/09/21 13:36:52 fabiankeil
  *
  * Revisions   :
  *    $Log: loaders.c,v $
+ *    Revision 1.71  2009/03/04 18:24:47  fabiankeil
+ *    No need to create empty strings manually, strdup("") FTW.
+ *
+ *    Revision 1.70  2009/03/01 18:34:24  fabiankeil
+ *    Help clang understand that we aren't dereferencing
+ *    NULL pointers here.
+ *
  *    Revision 1.69  2008/09/21 13:36:52  fabiankeil
  *    If change-x-forwarded-for{add} is used and the client
  *    sends multiple X-Forwarded-For headers, append the client's
@@ -446,14 +453,15 @@ static struct file_list *current_re_filterfile[MAX_AF_FILES]  = {
  *
  * Parameters  :  None
  *
- * Returns     :  N/A
+ * Returns     :  The number of threads that are still active.
  *
  *********************************************************************/
-void sweep(void)
+unsigned int sweep(void)
 {
    struct file_list *fl, *nfl;
    struct client_state *csp, *last_active;
    int i;
+   unsigned int active_threads = 0;
 
    /* clear all of the file's active flags */
    for ( fl = files->next; NULL != fl; fl = fl->next )
@@ -508,10 +516,11 @@ void sweep(void)
             csp->tlist->active = 1;
          }
 #endif /* def FEATURE_TRUST */
-         
+
+         active_threads++;
+
          last_active = csp;
          csp = csp->next;
-
       }
       else 
       /*
@@ -573,6 +582,8 @@ void sweep(void)
       }
    }
 
+   return active_threads;
+
 }
 
 
@@ -873,30 +884,30 @@ jb_err edit_read_line(FILE *fp,
 
    if (raw_out)
    {
-      if ((raw = malloc(1)) == NULL)
+      raw = strdup("");
+      if (NULL == raw)
       {
          return JB_ERR_MEMORY;
       }
-      *raw = '\0';
    }
    if (prefix_out)
    {
-      if ((prefix = malloc(1)) == NULL)
+      prefix = strdup("");
+      if (NULL == prefix)
       {
          freez(raw);
          return JB_ERR_MEMORY;
       }
-      *prefix = '\0';
    }
    if (data_out)
    {
-      if ((data = malloc(1)) == NULL)
+      data = strdup("");
+      if (NULL == data)
       {
          freez(raw);
          freez(prefix);
          return JB_ERR_MEMORY;
       }
-      *data = '\0';
    }
 
    /* Main loop.  Loop while we need more data & it's not EOF. */