Improve the handling of chunk-encoded responses
[privoxy.git] / filters.h
index b976395..54873af 100644 (file)
--- a/filters.h
+++ b/filters.h
@@ -1,25 +1,19 @@
 #ifndef FILTERS_H_INCLUDED
 #define FILTERS_H_INCLUDED
-#define FILTERS_H_VERSION "$Id: filters.h,v 1.37 2009/05/16 13:27:20 fabiankeil Exp $"
 /*********************************************************************
  *
  * File        :  $Source: /cvsroot/ijbswa/current/filters.h,v $
  *
  * Purpose     :  Declares functions to parse/crunch headers and pages.
- *                Functions declared include:
- *                   `acl_addr', `add_stats', `block_acl', `block_imageurl',
- *                   `block_url', `url_actions', `filter_popups', `forward_url'
- *                   `ij_untrusted_url', `intercept_url', `re_process_buffer',
- *                   `show_proxy_args', and `trust_url'
  *
  * Copyright   :  Written by and Copyright (C) 2001-2010 the
- *                Privoxy team. http://www.privoxy.org/
+ *                Privoxy team. https://www.privoxy.org/
  *
  *                Based on the Internet Junkbuster originally written
- *                by and Copyright (C) 1997 Anonymous Coders and 
+ *                by and Copyright (C) 1997 Anonymous Coders and
  *                Junkbusters Corporation.  http://www.junkbusters.com
  *
- *                This program is free software; you can redistribute it 
+ *                This program is free software; you can redistribute it
  *                and/or modify it under the terms of the GNU General
  *                Public License as published by the Free Software
  *                Foundation; either version 2 of the License, or (at
 
 #include "project.h"
 
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-struct access_control_addr;
-struct client_state;
-struct http_request;
-struct http_response;
-struct current_action_spec;
-struct url_actions;
-struct url_spec;
-
-
 /*
  * ACL checking
  */
@@ -89,9 +69,11 @@ extern int connect_port_is_forbidden(const struct client_state *csp);
  */
 extern void get_url_actions(struct client_state *csp,
                             struct http_request *http);
-extern void apply_url_actions(struct current_action_spec *action, 
-                              struct http_request *http, 
-                              struct url_actions *b);
+
+extern struct re_filterfile_spec *get_filter(const struct client_state *csp,
+                                             const char *requested_name,
+                                             enum filter_type requested_type);
+
 /*
  * Determining parent proxies
  */
@@ -101,18 +83,18 @@ extern const struct forward_spec *forward_url(struct client_state *csp,
 /*
  * Content modification
  */
-
-typedef char *(*filter_function_ptr)();
-extern char *execute_content_filter(struct client_state *csp, filter_function_ptr content_filter);
-
-extern filter_function_ptr get_filter_function(struct client_state *csp);
+extern char *execute_content_filters(struct client_state *csp);
+extern int execute_client_body_filters(struct client_state *csp, size_t *content_length);
+extern jb_err execute_client_body_taggers(struct client_state *csp, size_t content_length);
 extern char *execute_single_pcrs_command(char *subject, const char *pcrs_command, int *hits);
 extern char *rewrite_url(char *old_url, const char *pcrs_command);
-extern char *get_last_url(char *subject, const char *redirect_mode);
 
 extern pcrs_job *compile_dynamic_pcrs_job_list(const struct client_state *csp, const struct re_filterfile_spec *b);
 
+extern int content_requires_filtering(struct client_state *csp);
 extern int content_filters_enabled(const struct current_action_spec *action);
+extern int client_body_filters_enabled(const struct current_action_spec *action);
+extern int client_body_taggers_enabled(const struct current_action_spec *action);
 extern int filters_available(const struct client_state *csp);
 
 /*
@@ -120,22 +102,25 @@ extern int filters_available(const struct client_state *csp);
  */
 extern struct http_response *direct_response(struct client_state *csp);
 
+extern int get_bytes_missing_from_chunked_data(char *buffer, size_t size, size_t offset);
+extern int chunked_data_is_complete(char *buffer, size_t size, size_t offset);
 
-/*
- * Solaris fix:
- */
-#ifndef INADDR_NONE
-#define INADDR_NONE -1
-#endif     
-
-/* 
- * Revision control strings from this header and associated .c file
- */
-extern const char filters_rcs[];
-extern const char filters_h_rcs[];
+#ifdef FUZZ
+extern char *gif_deanimate_response(struct client_state *csp);
+extern jb_err remove_chunked_transfer_coding(char *buffer, size_t *size);
+#endif
 
-#ifdef __cplusplus
-} /* extern "C" */
+#ifdef FEATURE_EXTENDED_STATISTICS
+extern void register_filter_for_statistics(const char *filter);
+extern void update_filter_statistics(const char *filter, int hits);
+extern void get_filter_statistics(const char *filter,
+                                  unsigned long long *executions,
+                                  unsigned long long *pages_modified,
+                                  unsigned long long *hits);
+
+extern void register_block_reason_for_statistics(const char *block_reason);
+extern void get_block_reason_count(const char *block_reason,
+                                   unsigned long long *count);
 #endif
 
 #endif /* ndef FILTERS_H_INCLUDED */