+ * Revision 1.98 2007/07/14 07:31:26 fabiankeil
+ * Add new csp->content_type flag (CT_DECLARED).
+ *
+ * Revision 1.97 2007/05/27 12:38:08 fabiankeil
+ * - Remove some left-overs from the switch to dedicated header filters.
+ * - Adjust "X-Filter: No" to disable dedicated header filters.
+ * - Prepare for forward-override{}
+ *
+ * Revision 1.96 2007/05/14 10:41:15 fabiankeil
+ * Ditch the csp member cookie_list[] which isn't used anymore.
+ *
+ * Revision 1.95 2007/04/30 15:02:19 fabiankeil
+ * Introduce dynamic pcrs jobs that can resolve variables.
+ *
+ * Revision 1.94 2007/04/15 16:39:21 fabiankeil
+ * Introduce tags as alternative way to specify which
+ * actions apply to a request. At the moment tags can be
+ * created based on client and server headers.
+ *
+ * Revision 1.93 2007/03/20 15:16:34 fabiankeil
+ * Use dedicated header filter actions instead of abusing "filter".
+ * Replace "filter-client-headers" and "filter-client-headers"
+ * with "server-header-filter" and "client-header-filter".
+ *
+ * Revision 1.92 2007/03/17 15:20:05 fabiankeil
+ * New config option: enforce-blocks.
+ *
+ * Revision 1.91 2007/03/05 13:28:03 fabiankeil
+ * Add some CSP_FLAGs for the header parsers.
+ *
+ * Revision 1.90 2007/02/07 10:36:16 fabiankeil
+ * Add new http_response member to save
+ * the reason why the response was generated.
+ *
+ * Revision 1.89 2007/01/27 13:09:16 fabiankeil
+ * Add new config option "templdir" to
+ * change the templates directory.
+ *
+ * Revision 1.88 2007/01/25 13:36:59 fabiankeil
+ * Add csp->error_message for failure reasons
+ * that should be embedded into the CGI pages.
+ *
+ * Revision 1.87 2007/01/01 19:36:37 fabiankeil
+ * Integrate a modified version of Wil Mahan's
+ * zlib patch (PR #895531).
+ *
+ * Revision 1.86 2006/12/31 17:56:37 fabiankeil
+ * Added config option accept-intercepted-requests
+ * and disabled it by default.
+ *
+ * Revision 1.85 2006/12/31 15:03:31 fabiankeil
+ * Fix gcc43 compiler warnings and a comment.
+ *
+ * Revision 1.84 2006/12/21 12:57:48 fabiankeil
+ * Add config option "split-large-forms"
+ * to work around the browser bug reported
+ * in BR #1570678.
+ *
+ * Revision 1.83 2006/12/06 19:26:29 fabiankeil
+ * Moved HTTP snipplets into jcc.c. They aren't
+ * used anywhere else.
+ *
+ * Revision 1.82 2006/09/20 15:50:31 fabiankeil
+ * Doubled size of HOSTENT_BUFFER_SIZE to mask
+ * problems with gethostbyname_r and some
+ * /etc/hosts configurations. Only a workaround
+ * until we get the real fix ready.
+ * Thanks FĂ©lix Rauch for reporting.
+ *
+ * Increased value of MAX_TRUSTED_REFERRERS from 64 to 512.
+ *
+ * Revision 1.81 2006/09/06 13:03:04 fabiankeil
+ * Respond with 400 and a short text message
+ * if the client tries to use Privoxy as FTP proxy.
+ *
+ * Revision 1.80 2006/09/06 10:43:32 fabiankeil
+ * Added config option enable-remote-http-toggle
+ * to specify if Privoxy should recognize special
+ * headers (currently only X-Filter) to change its
+ * behaviour. Disabled by default.
+ *
+ * Revision 1.79 2006/09/06 09:23:37 fabiankeil
+ * Make number of retries in case of forwarded-connect problems
+ * a config file option (forwarded-connect-retries) and use 0 as
+ * default.
+ *
+ * Revision 1.78 2006/08/31 16:25:06 fabiankeil
+ * Work around a buffer overflow that caused Privoxy to
+ * segfault if too many trusted referrers were used. Good
+ * enough for now, but should be replaced with a real
+ * solution after the next release.
+ *
+ * Revision 1.77 2006/08/21 12:50:51 david__schmidt
+ * Formatting cleanup
+ *
+ * Revision 1.76 2006/08/14 08:25:19 fabiankeil
+ * Split filter-headers{} into filter-client-headers{}
+ * and filter-server-headers{}.
+ * Added parse_header_time() to share some code.
+ * Replaced timegm() with mktime().
+ *
+ * Revision 1.75 2006/08/03 02:46:41 david__schmidt
+ * Incorporate Fabian Keil's patch work:\r * http://www.fabiankeil.de/sourcecode/privoxy/
+ *
+ * Revision 1.74 2006/07/18 14:48:47 david__schmidt
+ * Reorganizing the repository: swapping out what was HEAD (the old 3.1 branch)
+ * with what was really the latest development (the v_3_0_branch branch)
+ *
+ * Revision 1.72.2.7 2006/01/29 23:10:56 david__schmidt
+ * Multiple filter file support
+ *
+ * Revision 1.72.2.6 2004/10/03 12:53:46 david__schmidt
+ * Add the ability to check jpeg images for invalid
+ * lengths of comment blocks. Defensive strategy
+ * against the exploit:
+ * Microsoft Security Bulletin MS04-028
+ * Buffer Overrun in JPEG Processing (GDI+) Could
+ * Allow Code Execution (833987)
+ * Enabled with +inspect-jpegs in actions files.
+ *
+ * Revision 1.72.2.5 2004/01/30 15:29:29 oes
+ * Updated the copyright note
+ *
+ * Revision 1.72.2.4 2004/01/13 16:12:14 oes
+ * Fixed double slash in USER_MANUAL_URL. Closes BR #867088.
+ *
+ * Revision 1.72.2.3 2003/03/11 11:54:37 oes
+ * Introduced RC_FLAG_* flags for use in child process return code
+ *
+ * Revision 1.72.2.2 2002/11/28 18:15:44 oes
+ * Added flag to each cgi_dispatcher that allows or denies
+ * external linking and removed const qualifier from
+ * struct list_entry.str.
+ *
+ * Revision 1.72.2.1 2002/08/10 11:25:18 oes
+ * - Include config.h for access to config data
+ * - Include <pcre*.h> depending on where they are
+ *
+ * Revision 1.72 2002/05/14 21:35:49 oes
+ * Split HELP_LINK_PREFIX into ACTIONS_HELP_PREFIX and CONFIG_HELP_PREFIX
+ * because of split in user-manual
+ *
+ * Revision 1.71 2002/05/12 21:39:36 jongfoster
+ * - Adding Doxygen-style comments to structures and #defines.
+ *
+ * Revision 1.70 2002/05/12 16:05:50 jongfoster
+ * Fixing ACTION_MASK_ALL to be unsigned long rather than
+ * just unsigned int. I don't know if anyone is porting
+ * Privoxy to 16-bit platforms, but if so, +limit-connect
+ * wouldn't have worked because of this bug.
+ *
+ * Revision 1.69 2002/05/08 16:00:16 oes
+ * Added size member to struct iob, so it can
+ * be alloced larger than needed.
+ *
+ * Revision 1.68 2002/04/26 12:56:00 oes
+ * Killed REDIRECT_URL, added USER_MANUAL_URL and HELP_LINK_PREFIX
+ *
+ * Revision 1.67 2002/04/24 02:12:43 oes
+ * - Jon's multiple AF patch:
+ * - Make csp->actions_list an array
+ * - #define MAX_AF_FILES
+ * - Moved CGI_PARAM_LEN_MAX (500) here
+ *
+ * Revision 1.66 2002/04/15 19:06:43 jongfoster
+ * Typos
+ *
+ * Revision 1.65 2002/04/04 00:36:36 gliptak
+ * always use pcre for matching
+ *
+ * Revision 1.64 2002/04/03 22:28:03 gliptak
+ * Removed references to gnu_regex
+ *
+ * Revision 1.63 2002/03/31 17:19:00 jongfoster
+ * Win32 only: Enabling STRICT to fix a VC++ compile warning.
+ *
+ * Revision 1.62 2002/03/26 22:48:49 swa
+ * new homepage url
+ *
+ * Revision 1.61 2002/03/26 22:29:55 swa
+ * we have a new homepage!
+ *
+ * Revision 1.60 2002/03/24 15:52:17 jongfoster
+ * Changing CGI URL prefixes for new name
+ *
+ * Revision 1.59 2002/03/24 15:23:33 jongfoster
+ * Name changes
+ *
+ * Revision 1.58 2002/03/24 13:25:43 swa
+ * name change related issues
+ *
+ * Revision 1.57 2002/03/16 20:28:34 oes
+ * Added descriptions to the filters so users will know what they select in the cgi editor
+ *
+ * Revision 1.56 2002/03/13 20:27:30 oes
+ * Fixing bug with CT_TABOO
+ *
+ * Revision 1.55 2002/03/12 01:42:50 oes
+ * Introduced modular filters
+ *
+ * Revision 1.54 2002/03/09 20:03:52 jongfoster
+ * - Making various functions return int rather than size_t.
+ * (Undoing a recent change). Since size_t is unsigned on
+ * Windows, functions like read_socket that return -1 on
+ * error cannot return a size_t.
+ *
+ * THIS WAS A MAJOR BUG - it caused frequent, unpredictable
+ * crashes, and also frequently caused JB to jump to 100%
+ * CPU and stay there. (Because it thought it had just
+ * read ((unsigned)-1) == 4Gb of data...)
+ *
+ * - The signature of write_socket has changed, it now simply
+ * returns success=0/failure=nonzero.
+ *
+ * - Trying to get rid of a few warnings --with-debug on
+ * Windows, I've introduced a new type "jb_socket". This is
+ * used for the socket file descriptors. On Windows, this
+ * is SOCKET (a typedef for unsigned). Everywhere else, it's
+ * an int. The error value can't be -1 any more, so it's
+ * now JB_INVALID_SOCKET (which is -1 on UNIX, and in
+ * Windows it maps to the #define INVALID_SOCKET.)
+ *
+ * - The signature of bind_port has changed.
+ *
+ * Revision 1.53 2002/03/08 16:48:55 oes
+ * Added FEATURE_NO_GIFS and BUILTIN_IMAGE_MIMETYPE
+ *
+ * Revision 1.52 2002/03/07 03:46:17 oes
+ * Fixed compiler warnings
+ *
+ * Revision 1.51 2002/03/05 04:52:42 oes
+ * Deleted non-errlog debugging code
+ *
+ * Revision 1.50 2002/03/04 19:32:07 oes
+ * Changed default port to 8118
+ *
+ * Revision 1.49 2002/03/04 18:28:55 oes
+ * Deleted PID_FILE_NAME
+ *
+ * Revision 1.48 2002/03/03 14:50:40 oes
+ * Fixed CLF logging: Added ocmd member for client's request to struct http_request
+ *
+ * Revision 1.47 2002/02/20 23:15:13 jongfoster
+ * Parsing functions now handle out-of-memory gracefully by returning
+ * an error code.
+ *
+ * Revision 1.46 2002/01/17 21:06:09 jongfoster
+ * Now #defining the URLs of the config interface
+ *
+ * Minor changes to struct http_request and struct url_spec due to
+ * standardizing that struct http_request is used to represent a URL, and
+ * struct url_spec is used to represent a URL pattern. (Before, URLs were
+ * represented as seperate variables and a partially-filled-in url_spec).
+ *
+ * Revision 1.45 2002/01/09 14:33:27 oes
+ * Added HOSTENT_BUFFER_SIZE
+ *
+ * Revision 1.44 2001/12/30 14:07:32 steudten
+ * - Add signal handling (unix)
+ * - Add SIGHUP handler (unix)
+ * - Add creation of pidfile (unix)
+ * - Add action 'top' in rc file (RH)
+ * - Add entry 'SIGNALS' to manpage
+ * - Add exit message to logfile (unix)
+ *
+ * Revision 1.43 2001/11/22 21:57:51 jongfoster
+ * Making action_spec->flags into an unsigned long rather than just an
+ * unsigned int.
+ * Adding ACTION_NO_COOKIE_KEEP
+ *
+ * Revision 1.42 2001/11/05 21:42:41 steudten
+ * Include DBG() macro.
+ *
+ * Revision 1.41 2001/10/28 19:12:06 jongfoster
+ * Adding ijb_toupper()
+ *
+ * Revision 1.40 2001/10/26 17:40:47 oes
+ * Moved ijb_isspace and ijb_tolower to project.h
+ * Removed http->user_agent, csp->referrer and csp->accept_types
+ *
+ * Revision 1.39 2001/10/25 03:45:02 david__schmidt
+ * Adding a (void*) cast to freez() because Visual Age C++ won't expand the
+ * macro when called with a cast; so moving the cast to the macro def'n
+ * seems to both eliminate compiler warnings (on darwin and OS/2, anyway) and
+ * doesn't make macro expansion complain. Hope this works for everyone else
+ * too...
+ *
+ * Revision 1.38 2001/10/23 21:19:04 jongfoster
+ * New error-handling support: jb_err type and JB_ERR_xxx constants
+ * CGI functions now return a jb_err, and their parameters map is const.
+ * Support for RUNTIME_FEATUREs to enable/disable config editor
+ * Adding a few comments
+ *
+ * Revision 1.37 2001/10/14 22:14:01 jongfoster
+ * Removing name_length field from struct cgi_dispatcher, as this is
+ * now calculated at runtime from the "name" field.
+ *
+ * Revision 1.36 2001/10/10 16:45:15 oes
+ * Added LIMIT_CONNECT action and string
+ * Fixed HTTP message line termination
+ * Added CFORBIDDEN HTTP message
+ *
+ * Revision 1.35 2001/10/07 18:06:43 oes
+ * Added status member to struct http_request
+ *
+ * Revision 1.34 2001/10/07 15:45:25 oes
+ * Added url member to struct http_request and commented all
+ * members
+ *
+ * Added CT_TABOO
+ *
+ * Added ACTION_DOWNGRADE and ACTION_NO_COMPRESSION
+ *
+ * Replaced struct client_state members rejected,
+ * force, active and toggled_on with "flags" bitmap.
+ *
+ * Added CSP_FLAG_MODIFIED and CSP_FLAG_CHUNKED
+ *
+ * Added buffer_limit to struct configuration_spec
+ *
+ * Revision 1.33 2001/09/20 13:30:08 steudten
+ *
+ * Make freez() more secure in case of: if (exp) { free(z) ; a=*z }
+ * Last case will set z to NULL in free(z) and thats bad..
+ *
+ * Revision 1.32 2001/09/16 23:02:51 jongfoster
+ * Fixing warning
+ *
+ * Revision 1.31 2001/09/16 13:20:29 jongfoster
+ * Rewrite of list library. Now has seperate header and list_entry
+ * structures. Also added a large sprinking of assert()s to the list
+ * code.
+ *
+ * Revision 1.30 2001/09/13 23:52:00 jongfoster
+ * Support for both static and dynamically generated CGI pages
+ *
+ * Revision 1.29 2001/09/13 23:29:43 jongfoster
+ * Defining FORWARD_SPEC_INITIALIZER
+ *
+ * Revision 1.28 2001/09/13 23:05:50 jongfoster
+ * Changing the string paramater to the header parsers a "const".
+ *
+ * Revision 1.27 2001/08/05 16:06:20 jongfoster
+ * Modifiying "struct map" so that there are now separate header and
+ * "map_entry" structures. This means that functions which modify a
+ * map no longer need to return a pointer to the modified map.
+ * Also, it no longer reverses the order of the entries (which may be
+ * important with some advanced template substitutions).
+ *
+ * Revision 1.26 2001/07/30 22:08:36 jongfoster
+ * Tidying up #defines:
+ * - All feature #defines are now of the form FEATURE_xxx
+ * - Permanently turned off WIN_GUI_EDIT
+ * - Permanently turned on WEBDAV and SPLIT_PROXY_ARGS
+ *
+ * Revision 1.25 2001/07/29 18:43:08 jongfoster
+ * Changing #ifdef _FILENAME_H to FILENAME_H_INCLUDED, to conform to
+ * ANSI C rules.
+ *
+ * Revision 1.24 2001/07/25 17:20:27 oes
+ * Introduced http->user_agent
+ *
+ * Revision 1.23 2001/07/18 12:32:23 oes
+ * - Added ACTION_STRING_DEANIMATE
+ * - moved #define freez from jcc.h to project.h
+ *
+ * Revision 1.22 2001/07/15 17:51:41 jongfoster
+ * Renaming #define STATIC to STATIC_PCRE
+ *
+ * Revision 1.21 2001/07/13 14:03:19 oes
+ * - Reorganized regex header inclusion and #defines to
+ * comply to the scheme in configure.in
+ * - Added csp->content_type and its CT_* keys
+ * - Added ACTION_DEANIMATE
+ * - Removed all #ifdef PCRS
+ *
+ * Revision 1.20 2001/06/29 21:45:41 oes
+ * Indentation, CRLF->LF, Tab-> Space
+ *
+ * Revision 1.19 2001/06/29 13:33:36 oes
+ * - Improved comments
+ * - Introduced http_request.host_ip_addr_str
+ * - Introduced http_response.head_length
+ * - Introduced config.my_ip_addr_str, config.my_hostname,
+ * config.admin_address and config.proxy_info_url
+ * - Removed config.proxy_args_header and config.proxy_args_trailer,
+ * renamed config.proxy_args_invocation to config.proxy_args
+ * - Removed HTML snipplets and GIFs
+ * - Removed logentry from cancelled commit
+ *
+ * Revision 1.18 2001/06/09 10:57:39 jongfoster
+ * Adding definition of BUFFER_SIZE.
+ * Changing struct cgi_dispatcher to use "const" strings.
+ *
+ * Revision 1.17 2001/06/07 23:15:09 jongfoster
+ * Merging ACL and forward files into config file.
+ * Moving struct gateway members into struct forward_spec
+ * Removing config->proxy_args_gateways
+ * Cosmetic: Adding a few comments
+ *
+ * Revision 1.16 2001/06/04 18:31:58 swa
+ * files are now prefixed with either `confdir' or `logdir'.
+ * `make redhat-dist' replaces both entries confdir and logdir
+ * with redhat values
+ *
+ * Revision 1.15 2001/06/04 11:28:53 swa
+ * redirect did not work due to missing /
+ *
+ * Revision 1.14 2001/06/03 11:03:48 oes
+ * Added struct map,
+ * added struct http_response,
+ * changed struct interceptors to struct cgi_dispatcher,
+ * moved HTML stuff to cgi.h
+ *
+ * Revision 1.13 2001/06/01 20:05:36 jongfoster
+ * Support for +image-blocker{}: added ACTION_IMAGE_BLOCKER
+ * constant, and removed csp->tinygif.
+ *
+ * Revision 1.12 2001/06/01 18:49:17 jongfoster
+ * Replaced "list_share" with "list" - the tiny memory gain was not
+ * worth the extra complexity.
+ *
+ * Revision 1.11 2001/06/01 10:32:47 oes
+ * Added constants for anchoring selection bitmap
+ *