Add an enable-compression directive and disable compression by default
[privoxy.git] / project.h
index 65bd400..37cfc41 100644 (file)
--- a/project.h
+++ b/project.h
@@ -1,7 +1,7 @@
 #ifndef PROJECT_H_INCLUDED
 #define PROJECT_H_INCLUDED
 /** Version string. */
-#define PROJECT_H_VERSION "$Id: project.h,v 1.159 2010/09/03 17:38:20 fabiankeil Exp $"
+#define PROJECT_H_VERSION "$Id: project.h,v 1.168 2011/07/08 13:27:31 fabiankeil Exp $"
 /*********************************************************************
  *
  * File        :  $Source: /cvsroot/ijbswa/current/project.h,v $
@@ -191,7 +191,7 @@ typedef int jb_err;
  * Buffer size for capturing struct hostent data in the
  * gethostby(name|addr)_r library calls. Since we don't
  * loop over gethostbyname_r, the buffer must be sufficient
- * to accomodate multiple IN A RRs, as used in DNS round robin
+ * to accommodate multiple IN A RRs, as used in DNS round robin
  * load balancing. W3C's wwwlib uses 1K, so that should be
  * good enough for us, too.
  */
@@ -503,7 +503,7 @@ struct iob
 #define ACTION_FORCE_TEXT_MODE                       0x00400000UL
 /** Action bitmap: Enable text mode by force */
 #define ACTION_CRUNCH_IF_NONE_MATCH                  0x00800000UL
-/** Action bitmap: Enable content-dispostion crunching */
+/** Action bitmap: Enable content-disposition crunching */
 #define ACTION_HIDE_CONTENT_DISPOSITION              0x01000000UL
 /** Action bitmap: Replace or block Last-Modified header */
 #define ACTION_OVERWRITE_LAST_MODIFIED               0x02000000UL
@@ -531,7 +531,7 @@ struct iob
 #define ACTION_STRING_LANGUAGE              8
 /** Action string index: Replacement for the "Content-Type:" header*/
 #define ACTION_STRING_CONTENT_TYPE          9
-/** Action string index: Replacement for the "content-dispostion:" header*/
+/** Action string index: Replacement for the "content-disposition:" header*/
 #define ACTION_STRING_CONTENT_DISPOSITION  10
 /** Action string index: Replacement for the "If-Modified-Since:" header*/
 #define ACTION_STRING_IF_MODIFIED_SINCE    11
@@ -765,7 +765,7 @@ struct reusable_connection
 #define CSP_FLAG_SERVER_CONTENT_LENGTH_SET     0x00002000U
 
 /**
- * Flag for csp->flags: Set if we know the content lenght,
+ * Flag for csp->flags: Set if we know the content length,
  * either because the server set it, or we figured it out
  * on our own.
  */
@@ -810,6 +810,17 @@ struct reusable_connection
  */
 #define CSP_FLAG_REUSED_CLIENT_CONNECTION           0x00100000U
 
+/**
+ * Flag for csp->flags: Set if the supports deflate compression.
+ */
+#define CSP_FLAG_CLIENT_SUPPORTS_DEFLATE            0x00200000U
+
+/**
+ * Flag for csp->flags: Set if the content has been deflated by Privoxy
+ */
+#define CSP_FLAG_BUFFERED_CONTENT_DEFLATED          0x00400000U
+
+
 /*
  * Flags for use in return codes of child processes
  */
@@ -1031,12 +1042,16 @@ struct block_spec
 
 #endif /* def FEATURE_TRUST */
 
-
-#define SOCKS_NONE    0    /**< Don't use a SOCKS server               */
-#define SOCKS_4      40    /**< original SOCKS 4 protocol              */
-#define SOCKS_4A     41    /**< as modified for hosts w/o external DNS */
-#define SOCKS_5      50    /**< as modified for hosts w/o external DNS */
-
+enum forwarder_type {
+   /**< Don't use a SOCKS server               */
+   SOCKS_NONE =  0,
+   /**< original SOCKS 4 protocol              */
+   SOCKS_4    = 40,
+   /**< SOCKS 4A, DNS resolution is done by the SOCKS server */
+   SOCKS_4A   = 41,
+   /**< SOCKS 5 with hostnames, DNS resolution is done by the SOCKS server */
+   SOCKS_5    = 50,
+};
 
 /**
  * How to forward a connection to a parent proxy.
@@ -1047,7 +1062,7 @@ struct forward_spec
    struct url_spec url[1];
 
    /** Connection type.  Must be SOCKS_NONE, SOCKS_4, SOCKS_4A or SOCKS_5. */
-   int   type;
+   enum forwarder_type type;
 
    /** SOCKS server hostname.  Only valid if "type" is SOCKS_4 or SOCKS_4A. */
    char *gateway_host;
@@ -1175,6 +1190,9 @@ struct access_control_list
 /** configuration_spec::feature_flags: Pages blocked with +handle-as-empty-doc get a return status of 200 OK. */
 #define RUNTIME_FEATURE_EMPTY_DOC_RETURNS_OK       512U
 
+/** configuration_spec::feature_flags: Buffered content is sent compressed if the client supports it. */
+#define RUNTIME_FEATURE_COMPRESSION               1024U
+
 /**
  * Data loaded from the configuration file.
  *
@@ -1290,6 +1308,10 @@ struct configuration_spec
    unsigned int default_server_timeout;
 #endif
 
+#ifdef FEATURE_COMPRESSION
+   int compression_level;
+#endif
+
    /** All options from the config file, HTML-formatted. */
    char *proxy_args;