From a7cb86f1c9255783a585739823273a39fa953f02 Mon Sep 17 00:00:00 2001 From: Jeff Trawick Date: Fri, 16 Nov 2007 12:36:25 +0000 Subject: [PATCH] Finish up http://svn.apache.org/viewvc?view=rev&revision=102066 http://svn.apache.org/viewvc?view=rev&revision=102205 from almost 4 years ago by removing abandoned logic from the fixup hook. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@595646 13f79535-47bb-0310-9956-ffa450edef68 --- modules/filters/mod_charset_lite.c | 70 ++---------------------------- 1 file changed, 4 insertions(+), 66 deletions(-) diff --git a/modules/filters/mod_charset_lite.c b/modules/filters/mod_charset_lite.c index 1489e4316c..85a3b2184b 100644 --- a/modules/filters/mod_charset_lite.c +++ b/modules/filters/mod_charset_lite.c @@ -189,9 +189,9 @@ static const char *add_charset_options(cmd_parms *cmd, void *in_dc, return NULL; } -/* find_code_page() is a fixup hook that decides if translation should be - * enabled; if so, it sets up request data for use by the filter registration - * hook so that it knows what to do +/* find_code_page() is a fixup hook that checks if the module is + * configured and the input or output potentially need to be translated. + * If so, context is initialized for the filters. */ static int find_code_page(request_rec *r) { @@ -200,7 +200,6 @@ static int find_code_page(request_rec *r) charset_req_t *reqinfo; charset_filter_ctx_t *input_ctx, *output_ctx; apr_status_t rv; - const char *mime_type; if (dc->debug >= DBGLVL_FLOW) { ap_log_rerror(APLOG_MARK,APLOG_DEBUG, 0, r, @@ -241,53 +240,6 @@ static int find_code_page(request_rec *r) /* no translation when server and network charsets are set to the same value */ if (!strcasecmp(dc->charset_source, dc->charset_default)) return DECLINED; - mime_type = r->content_type ? r->content_type : ap_default_type(r); - - /* If mime type isn't text or message, bail out. - */ - -/* XXX When we handle translation of the request body, watch out here as - * 1.3 allowed additional mime types: multipart and - * application/x-www-form-urlencoded - */ - - if (strncasecmp(mime_type, "text/", 5) && -#if APR_CHARSET_EBCDIC || AP_WANT_DIR_TRANSLATION - /* On an EBCDIC machine, be willing to translate mod_autoindex- - * generated output. Otherwise, it doesn't look too cool. - * - * XXX This isn't a perfect fix because this doesn't trigger us - * to convert from the charset of the source code to ASCII. The - * general solution seems to be to allow a generator to set an - * indicator in the r specifying that the body is coded in the - * implementation character set (i.e., the charset of the source - * code). This would get several different types of documents - * translated properly: mod_autoindex output, mod_status output, - * mod_info output, hard-coded error documents, etc. - */ - strcmp(mime_type, DIR_MAGIC_TYPE) && -#endif - strncasecmp(mime_type, "message/", 8)) { - if (dc->debug >= DBGLVL_GORY) { - ap_log_rerror(APLOG_MARK, APLOG_DEBUG, 0, r, - "mime type is %s; no translation selected", - mime_type); - } - /* We must not bail out here (i.e., the MIME test must be in the filter - * itself, not in the fixup, because only then is the final MIME type known. - * Examples for late changes to the MIME type include CGI handling (MIME - * type is set in the Content-Type header produced by the CGI script), or - * PHP (until PHP runs, the MIME type is set to application/x-httpd-php) - */ - } - - if (dc->debug >= DBGLVL_GORY) { - ap_log_rerror(APLOG_MARK, APLOG_DEBUG, 0, r, - "charset_source: %s charset_default: %s", - dc && dc->charset_source ? dc->charset_source : "(none)", - dc && dc->charset_default ? dc->charset_default : "(none)"); - } - /* Get storage for the request data and the output filter context. * We rarely need the input filter context, so allocate that separately. */ @@ -302,14 +254,6 @@ static int find_code_page(request_rec *r) reqinfo->output_ctx = output_ctx; - /* We must not open the xlation table here yet, because the final MIME - * type is not known until we are actually called in the output filter. - * With POST or PUT request, the case is different, because their MIME - * type is set in the request headers, and their data are prerequisites - * for actually calling, e.g., the CGI handler later on. - */ - output_ctx->xlate = NULL; - switch (r->method_number) { case M_PUT: case M_POST: @@ -832,18 +776,12 @@ static apr_status_t xlate_out_filter(ap_filter_t *f, apr_bucket_brigade *bb) } } - /* Opening the output translation (this used to be done in the fixup hook, - * but that was too early: a subsequent type modification, e.g., by a - * CGI script, would go unnoticed. Now we do it in the filter itself.) + /* Check the mime type to see if translation should be performed. */ if (!ctx->noop && ctx->xlate == NULL) { const char *mime_type = f->r->content_type ? f->r->content_type : ap_default_type(f->r); - /* XXX When we handle translation of the request body, watch out here as - * 1.3 allowed additional mime types: multipart and - * application/x-www-form-urlencoded - */ if (strncasecmp(mime_type, "text/", 5) == 0 || #if APR_CHARSET_EBCDIC /* On an EBCDIC machine, be willing to translate mod_autoindex- -- 2.40.0