httpd-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Bill Stoddard" <stodd...@raleigh.ibm.com>
Subject Re: cvs commit: httpd-2.0/modules/filters mod_include.c
Date Thu, 02 Aug 2001 21:15:04 GMT
Do you plan to handle the pass_brigade hidden in SPLIT_AND_PASS_PRETAG_BUCKETS()?

Bill

----- Original Message -----
From: <rbb@apache.org>
To: <httpd-2.0-cvs@apache.org>
Sent: Thursday, August 02, 2001 12:59 AM
Subject: cvs commit: httpd-2.0/modules/filters mod_include.c


> rbb         01/08/01 21:59:51
>
>   Modified:    .        CHANGES
>                modules/filters mod_include.c
>   Log:
>   Make the includes filter check return codes from filters lower in
>   the filter chain.  If a lower level filter returns an error, then
>   the request needs to stop immediately.  This allows mod_include to
>   stop parsing data once a lower filter recognizes an error.
>   PR: 8102
>
>   Revision  Changes    Path
>   1.271     +6 -0      httpd-2.0/CHANGES
>
>   Index: CHANGES
>   ===================================================================
>   RCS file: /home/cvs/httpd-2.0/CHANGES,v
>   retrieving revision 1.270
>   retrieving revision 1.271
>   diff -u -r1.270 -r1.271
>   --- CHANGES 2001/08/02 04:25:19 1.270
>   +++ CHANGES 2001/08/02 04:59:50 1.271
>   @@ -1,5 +1,11 @@
>    Changes with Apache 2.0.23-dev
>
>   +  *) Make the includes filter check return codes from filters lower in
>   +     the filter chain.  If a lower level filter returns an error, then
>   +     the request needs to stop immediately.  This allows mod_include to
>   +     stop parsing data once a lower filter recognizes an error.
>   +     [Ryan Bloom]
>   +
>      *) Add the ability to extend the methods that Apache understands
>         and have those methods <limit>able in the httpd.conf. It uses
>         the same bit mask/shifted offset as the original HTTP methods
>
>
>
>   1.117     +19 -9     httpd-2.0/modules/filters/mod_include.c
>
>   Index: mod_include.c
>   ===================================================================
>   RCS file: /home/cvs/httpd-2.0/modules/filters/mod_include.c,v
>   retrieving revision 1.116
>   retrieving revision 1.117
>   diff -u -r1.116 -r1.117
>   --- mod_include.c 2001/07/26 16:37:56 1.116
>   +++ mod_include.c 2001/08/02 04:59:51 1.117
>   @@ -2319,14 +2319,15 @@
>
>    /* -------------------------- The main function --------------------------- */
>
>   -static void send_parsed_content(apr_bucket_brigade **bb, request_rec *r,
>   -                                ap_filter_t *f)
>   +static apr_status_t send_parsed_content(apr_bucket_brigade **bb,
>   +                                        request_rec *r, ap_filter_t *f)
>    {
>        include_ctx_t *ctx = f->ctx;
>        apr_bucket *dptr = APR_BRIGADE_FIRST(*bb);
>        apr_bucket *tmp_dptr;
>        apr_bucket_brigade *tag_and_after;
>        int ret;
>   +    apr_status_t rv;
>
>        if (r->args) {              /* add QUERY stuff to env cause it ain't yet */
>            char *arg_copy = apr_pstrdup(r->pool, r->args);
>   @@ -2384,7 +2385,10 @@
>                else if ((tmp_dptr != NULL) && (ctx->bytes_parsed >=
BYTE_COUNT_THRESHOLD)) {
>                                   /* Send the large chunk of pre-tag bytes...  */
>                    tag_and_after = apr_brigade_split(*bb, tmp_dptr);
>   -                ap_pass_brigade(f->next, *bb);
>   +                rv = ap_pass_brigade(f->next, *bb);
>   +                if (rv != APR_SUCCESS) {
>   +                    return rv;
>   +                }
>                    *bb  = tag_and_after;
>                    dptr = tmp_dptr;
>                    ctx->bytes_parsed = 0;
>   @@ -2572,7 +2576,10 @@
>                } while (dptr != APR_BRIGADE_SENTINEL(*bb));
>            }
>            else { /* Otherwise pass it along... */
>   -            ap_pass_brigade(f->next, *bb);  /* No SSI tags in this brigade... */
>   +            rv = ap_pass_brigade(f->next, *bb);  /* No SSI tags in this brigade...
*/
>   +            if (rv != APR_SUCCESS) {
>   +                return rv;
>   +            }
>                ctx->bytes_parsed = 0;
>            }
>        }
>   @@ -2595,7 +2602,10 @@
>                               /* Set aside tag, pass pre-tag... */
>                tag_and_after = apr_brigade_split(*bb, ctx->head_start_bucket);
>                ap_save_brigade(f, &ctx->ssi_tag_brigade, &tag_and_after, r->pool);
>   -            ap_pass_brigade(f->next, *bb);
>   +            rv = ap_pass_brigade(f->next, *bb);
>   +            if (rv != APR_SUCCESS) {
>   +                return rv;
>   +            }
>                ctx->bytes_parsed = 0;
>            }
>        }
>   @@ -2661,6 +2671,7 @@
>        request_rec *r = f->r;
>        include_ctx_t *ctx = f->ctx;
>        request_rec *parent;
>   +    apr_status_t rv;
>        include_dir_config *conf =
>                       (include_dir_config *)ap_get_module_config(r->per_dir_config,
>                                                                  &include_module);
>   @@ -2688,8 +2699,7 @@
>                ctx->error_length = strlen(ctx->error_str);
>            }
>            else {
>   -            ap_pass_brigade(f->next, b);
>   -            return APR_ENOMEM;
>   +            return ap_pass_brigade(f->next, b);
>            }
>        }
>        else {
>   @@ -2740,7 +2750,7 @@
>         */
>        apr_table_unset(f->r->headers_out, "Content-Length");
>
>   -    send_parsed_content(&b, r, f);
>   +    rv = send_parsed_content(&b, r, f);
>
>        if (parent) {
>    /* signify that the sub request should not be killed */
>   @@ -2748,7 +2758,7 @@
>        NESTED_INCLUDE_MAGIC);
>        }
>
>   -    return APR_SUCCESS;
>   +    return rv;
>    }
>
>    static void ap_register_include_handler(char *tag, include_handler_fn_t *func)
>
>
>


Mime
View raw message