From 4b6701890858563434317349fc7237347deea8de Mon Sep 17 00:00:00 2001 From: Eric Covener Date: Wed, 20 Feb 2008 21:17:17 +0000 Subject: [PATCH] *) mod_charset_lite: Add ForceAllMimeTypes sub-option to CharsetOptions, allowing the administrator to skip the mimetype checking that precedes translation. PR 44458 [Eric Covener] git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@629615 13f79535-47bb-0310-9956-ffa450edef68 --- CHANGES | 5 +++++ docs/manual/mod/mod_charset_lite.html.en | 8 ++++++++ docs/manual/mod/mod_charset_lite.xml | 8 ++++++++ modules/filters/mod_charset_lite.c | 13 ++++++++++++- 4 files changed, 33 insertions(+), 1 deletion(-) diff --git a/CHANGES b/CHANGES index 311bf36cbd..624cff625c 100644 --- a/CHANGES +++ b/CHANGES @@ -2,6 +2,11 @@ Changes with Apache 2.3.0 [ When backported to 2.2.x, remove entry from this file ] + *) mod_charset_lite: Add ForceAllMimeTypes sub-option to + CharsetOptions, allowing the administrator to skip the + mimetype checking that precedes translation. + PR 44458 [Eric Covener] + *) mod_include: Correctly handle SSI directives split over multiple filter passes. PR 44447 [Harald Niesche ] diff --git a/docs/manual/mod/mod_charset_lite.html.en b/docs/manual/mod/mod_charset_lite.html.en index 348b80c50c..6407da62ba 100644 --- a/docs/manual/mod/mod_charset_lite.html.en +++ b/docs/manual/mod/mod_charset_lite.html.en @@ -166,6 +166,14 @@ explicitly configured using the AddOutputFilter directive, NoImplicitAdd should be specified so that mod_charset_lite doesn't add its filter. + +
ForceAllMimeTypes | NoForceAllMimeTypes
+
Normally, mod_charset_lite will only perform + translation on a small subset of possible mimetypes. When the + ForceAllMimeTypes keyord is specified for a given + configuration section, translation is performed without regard for + mimetype.
+ diff --git a/docs/manual/mod/mod_charset_lite.xml b/docs/manual/mod/mod_charset_lite.xml index 30f2630682..4eb4cd53f6 100644 --- a/docs/manual/mod/mod_charset_lite.xml +++ b/docs/manual/mod/mod_charset_lite.xml @@ -193,6 +193,14 @@ >AddOutputFilter directive, NoImplicitAdd should be specified so that mod_charset_lite doesn't add its filter. + +
ForceAllMimeTypes | NoForceAllMimeTypes
+
Normally, mod_charset_lite will only perform + translation on a small subset of possible mimetypes. When the + ForceAllMimeTypes keyord is specified for a given + configuration section, translation is performed without regard for + mimetype.
+ diff --git a/modules/filters/mod_charset_lite.c b/modules/filters/mod_charset_lite.c index ed8ecbe5ca..2a276e3a62 100644 --- a/modules/filters/mod_charset_lite.c +++ b/modules/filters/mod_charset_lite.c @@ -76,6 +76,8 @@ typedef struct charset_dir_t { const char *charset_default; /* how to ship on wire */ /** module does ap_add_*_filter()? */ enum {IA_INIT, IA_IMPADD, IA_NOIMPADD} implicit_add; + /** treat all mimetypes as text? */ + enum {FX_INIT, FX_FORCE, FX_NOFORCE} force_xlate; } charset_dir_t; /* charset_filter_ctx_t is created for each filter instance; because the same @@ -138,6 +140,8 @@ static void *merge_charset_dir_conf(apr_pool_t *p, void *basev, void *overridesv over->charset_source ? over->charset_source : base->charset_source; a->implicit_add = over->implicit_add != IA_INIT ? over->implicit_add : base->implicit_add; + a->force_xlate= + over->force_xlate != FX_INIT ? over->force_xlate : base->force_xlate; return a; } @@ -176,6 +180,12 @@ static const char *add_charset_options(cmd_parms *cmd, void *in_dc, else if (!strcasecmp(flag, "NoImplicitAdd")) { dc->implicit_add = IA_NOIMPADD; } + if (!strcasecmp(flag, "ForceAllMimeTypes")) { + dc->force_xlate = FX_FORCE; + } + else if (!strcasecmp(flag, "NoForceAllMimeTypes")) { + dc->force_xlate = FX_NOFORCE; + } else if (!strncasecmp(flag, "DebugLevel=", 11)) { dc->debug = atoi(flag + 11); } @@ -803,7 +813,8 @@ static apr_status_t xlate_out_filter(ap_filter_t *f, apr_bucket_brigade *bb) */ strcmp(mime_type, DIR_MAGIC_TYPE) == 0 || #endif - strncasecmp(mime_type, "message/", 8) == 0) { + strncasecmp(mime_type, "message/", 8) == 0 || + dc->force_xlate == FX_FORCE) { rv = apr_xlate_open(&ctx->xlate, dc->charset_default, dc->charset_source, f->r->pool); -- 2.40.0