From: Graham Leggett Date: Sun, 19 Sep 2010 17:11:45 +0000 (+0000) Subject: mod_include: Move the request_rec within mod_include to be X-Git-Tag: 2.3.9~484 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=742123230ff1393dcecf616391d6de6764df6c70;p=thirdparty%2Fapache%2Fhttpd.git mod_include: Move the request_rec within mod_include to be exposed within include_ctx_t. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@998701 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/CHANGES b/CHANGES index 771c007f3e2..3fc35107156 100644 --- a/CHANGES +++ b/CHANGES @@ -2,6 +2,9 @@ Changes with Apache 2.3.9 + *) mod_include: Move the request_rec within mod_include to be + exposed within include_ctx_t. [Graham Leggett] + *) mod_include: Reinstate support for UTF-8 character sets by allowing a variable being echoed or set to be decoded and then encoded as separate steps. PR47686 [Graham Leggett] diff --git a/include/ap_mmn.h b/include/ap_mmn.h index d31ca75cf93..a10c13cc63b 100644 --- a/include/ap_mmn.h +++ b/include/ap_mmn.h @@ -253,12 +253,14 @@ * mod_cache store_body() provider function. * 20100916.0 (2.3.9-dev) Add commit_entity() to the mod_cache provider * interface. + * 20100918.0 (2.3.9-dev) Move the request_rec within mod_include to be + * exposed within include_ctx_t. */ #define MODULE_MAGIC_COOKIE 0x41503234UL /* "AP24" */ #ifndef MODULE_MAGIC_NUMBER_MAJOR -#define MODULE_MAGIC_NUMBER_MAJOR 20100916 +#define MODULE_MAGIC_NUMBER_MAJOR 20100918 #endif #define MODULE_MAGIC_NUMBER_MINOR 0 /* 0...n */ diff --git a/modules/filters/mod_include.c b/modules/filters/mod_include.c index ba97f41fa89..ec8a4bfcec3 100644 --- a/modules/filters/mod_include.c +++ b/modules/filters/mod_include.c @@ -133,7 +133,6 @@ struct ssi_internal_ctx { apr_bucket_brigade *tmp_bb; - request_rec *r; const char *start_seq; bndm_t *start_seq_pat; const char *end_seq; @@ -600,7 +599,7 @@ static const char *add_include_vars_lazy(request_rec *r, const char *var, const static const char *get_include_var(const char *var, include_ctx_t *ctx) { const char *val; - request_rec *r = ctx->intern->r; + request_rec *r = ctx->r; if (apr_isdigit(*var) && !var[1]) { apr_size_t idx = *var - '0'; @@ -655,7 +654,7 @@ static const char *get_include_var(const char *var, include_ctx_t *ctx) static char *ap_ssi_parse_string(include_ctx_t *ctx, const char *in, char *out, apr_size_t length, int leave_name) { - request_rec *r = ctx->intern->r; + request_rec *r = ctx->r; result_item_t *result = NULL, *current = NULL; apr_size_t outlen = 0, inlen, span; char *ret = NULL, *eout = NULL; @@ -2290,9 +2289,9 @@ static apr_size_t find_directive(include_ctx_t *ctx, const char *data, if (!intern->directive_len) { intern->error = 1; - ap_log_rerror(APLOG_MARK, APLOG_ERR, 0, intern->r, "missing " + ap_log_rerror(APLOG_MARK, APLOG_ERR, 0, ctx->r, "missing " "directive name in parsed document %s", - intern->r->filename); + ctx->r->filename); } else { char *sp = intern->directive; @@ -2426,11 +2425,11 @@ static apr_size_t find_argument(include_ctx_t *ctx, const char *data, intern->current_arg->name_len = 0; intern->error = 1; - ap_log_rerror(APLOG_MARK, APLOG_ERR, 0, intern->r, "missing " + ap_log_rerror(APLOG_MARK, APLOG_ERR, 0, ctx->r, "missing " "argument name for value to tag %s in %s", - apr_pstrmemdup(intern->r->pool, intern->directive, + apr_pstrmemdup(ctx->r->pool, intern->directive, intern->directive_len), - intern->r->filename); + ctx->r->filename); return (p - data); @@ -2458,11 +2457,11 @@ static apr_size_t find_argument(include_ctx_t *ctx, const char *data, intern->current_arg->name_len); if (!intern->current_arg->name_len) { intern->error = 1; - ap_log_rerror(APLOG_MARK, APLOG_ERR, 0, intern->r, "missing " + ap_log_rerror(APLOG_MARK, APLOG_ERR, 0, ctx->r, "missing " "argument name for value to tag %s in %s", - apr_pstrmemdup(intern->r->pool, intern->directive, + apr_pstrmemdup(ctx->r->pool, intern->directive, intern->directive_len), - intern->r->filename); + ctx->r->filename); } else { char *sp = intern->current_arg->name; @@ -2632,7 +2631,6 @@ static apr_status_t send_parsed_content(ap_filter_t *f, apr_bucket_brigade *bb) /* initialization for this loop */ intern->bytes_read = 0; intern->error = 0; - intern->r = r; ctx->flush_now = 0; /* loop over the current bucket brigade */ @@ -3070,6 +3068,7 @@ static apr_status_t includes_filter(ap_filter_t *f, apr_bucket_brigade *b) /* create context for this filter */ f->ctx = ctx = apr_palloc(r->pool, sizeof(*ctx)); + ctx->r = r; ctx->intern = intern = apr_palloc(r->pool, sizeof(*ctx->intern)); ctx->pool = r->pool; apr_pool_create(&ctx->dpool, ctx->pool); diff --git a/modules/filters/mod_include.h b/modules/filters/mod_include.h index 74ff2bd1e3b..1ae13c17c6f 100644 --- a/modules/filters/mod_include.h +++ b/modules/filters/mod_include.h @@ -94,6 +94,9 @@ typedef struct { /* currently configured time format */ const char *time_str; + /* the current request */ + request_rec *r; + /* pointer to internal (non-public) data, don't touch */ struct ssi_internal_ctx *intern;