+ if (csp->content_type != CT_TABOO)
+ {
+ if (strstr(s, " text/") || strstr(s, "application/x-javascript"))
+ csp->content_type = CT_TEXT;
+ else if (strstr(s, " image/gif"))
+ csp->content_type = CT_GIF;
+ else
+ csp->content_type = 0;
+ }
+
+ return(strdup(s));
+
+}
+
+
+/*********************************************************************
+ *
+ * Function : server_transfer_coding
+ *
+ * Description : - Prohibit filtering (CT_TABOO) if transfer coding compresses
+ * - Raise the CSP_FLAG_CHUNKED flag if coding is "chunked"
+ * - Change from "chunked" to "identity" if body was chunked
+ * but has been de-chunked for filtering.
+ *
+ * Parameters :
+ * 1 : v = ignored
+ * 2 : s = header string we are "considering"
+ * 3 : csp = Current client state (buffers, headers, etc...)
+ *
+ * Returns : A duplicate string pointer to this header (ie. pass thru)
+ *
+ *********************************************************************/
+char *server_transfer_coding(const struct parsers *v, const char *s, struct client_state *csp)
+{
+ /*
+ * Turn off pcrs and gif filtering if body compressed
+ */
+ if (strstr(s, "gzip") || strstr(s, "compress") || strstr(s, "deflate"))
+ {
+ csp->content_type = CT_TABOO;
+ }
+
+ /*
+ * Raise flag if body chunked
+ */
+ if (strstr(s, "chunked"))
+ {
+ csp->flags |= CSP_FLAG_CHUNKED;
+
+ /*
+ * If the body was modified, it has been
+ * de-chunked first, so adjust the header:
+ */
+ if (csp->flags & CSP_FLAG_MODIFIED)
+ {
+ return(strdup("Transfer-Encoding: identity"));
+ }
+ }
+
+ return(strdup(s));
+
+}
+
+
+/*********************************************************************
+ *
+ * Function : server_content_encoding
+ *
+ * Description : Prohibit filtering (CT_TABOO) if content encoding compresses
+ *
+ * Parameters :
+ * 1 : v = ignored
+ * 2 : s = header string we are "considering"
+ * 3 : csp = Current client state (buffers, headers, etc...)
+ *
+ * Returns : A duplicate string pointer to this header (ie. pass thru)
+ *
+ *********************************************************************/
+char *server_content_encoding(const struct parsers *v, const char *s, struct client_state *csp)
+{
+ /*
+ * Turn off pcrs and gif filtering if body compressed
+ */
+ if (strstr(s, "gzip") || strstr(s, "compress") || strstr(s, "deflate"))
+ {
+ csp->content_type = CT_TABOO;
+ }