From 4f2f69e6e699f3a8315b7f45b7fe210457594e54 Mon Sep 17 00:00:00 2001 From: Cliff Woolley Date: Fri, 20 Apr 2001 20:58:28 +0000 Subject: [PATCH] Change mod_include to use the latest bucket API tricks. This gets rid of some obscure while loop magic that had to be done before, making mod_include easier to read and a better example for future filter writers. There should be no semantic changes in this patch... just a 1-to-1 mapping from while loops to bucket API calls that do the same thing. Reviewed by: Paul J. Reder git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@88906 13f79535-47bb-0310-9956-ffa450edef68 --- modules/filters/mod_include.c | 66 ++++++++++------------------------- 1 file changed, 19 insertions(+), 47 deletions(-) diff --git a/modules/filters/mod_include.c b/modules/filters/mod_include.c index bb7e035aef..51ff104462 100644 --- a/modules/filters/mod_include.c +++ b/modules/filters/mod_include.c @@ -2378,27 +2378,20 @@ static void send_parsed_content(apr_bucket_brigade **bb, request_rec *r, if ((do_cleanup) && (!APR_BRIGADE_EMPTY(ctx->ssi_tag_brigade))) { apr_bucket *tmp_bkt; - tmp_bkt = apr_bucket_immortal_create(STARTING_SEQUENCE, cleanup_bytes); + tmp_bkt = apr_bucket_immortal_create(STARTING_SEQUENCE, + cleanup_bytes); APR_BRIGADE_INSERT_HEAD(*bb, tmp_bkt); - - while (!APR_BRIGADE_EMPTY(ctx->ssi_tag_brigade)) { - tmp_bkt = APR_BRIGADE_FIRST(ctx->ssi_tag_brigade); - apr_bucket_delete(tmp_bkt); - } + apr_brigade_cleanup(ctx->ssi_tag_brigade); } /* If I am inside a conditional (if, elif, else) that is false * then I need to throw away anything contained in it. */ - if ((!(ctx->flags & FLAG_PRINTING)) && (tmp_dptr != NULL) && - (dptr != APR_BRIGADE_SENTINEL(*bb))) { - while ((dptr != APR_BRIGADE_SENTINEL(*bb)) && - (dptr != tmp_dptr)) { - apr_bucket *free_bucket = dptr; - - dptr = APR_BUCKET_NEXT (dptr); - apr_bucket_delete(free_bucket); - } + if ((!(ctx->flags & FLAG_PRINTING)) && (tmp_dptr != NULL)) { + apr_bucket_brigade *temp_bb = *bb; + *bb = apr_brigade_split(temp_bb, tmp_dptr); + apr_brigade_destroy(temp_bb); + dptr = APR_BRIGADE_FIRST(*bb); } /* Adjust the current bucket position based on what was found... */ @@ -2478,20 +2471,13 @@ static void send_parsed_content(apr_bucket_brigade **bb, request_rec *r, CREATE_ERROR_BUCKET(ctx, tmp_bkt, dptr, content_head); /* DO CLEANUP HERE!!!!! */ - tmp_dptr = ctx->head_start_bucket; if (!APR_BRIGADE_EMPTY(ctx->ssi_tag_brigade)) { - while (!APR_BRIGADE_EMPTY(ctx->ssi_tag_brigade)) { - tmp_bkt = APR_BRIGADE_FIRST(ctx->ssi_tag_brigade); - apr_bucket_delete(tmp_bkt); - } + apr_brigade_cleanup(ctx->ssi_tag_brigade); } else { - do { - tmp_bkt = tmp_dptr; - tmp_dptr = APR_BUCKET_NEXT (tmp_dptr); - apr_bucket_delete(tmp_bkt); - } while ((tmp_dptr != dptr) && - (tmp_dptr != APR_BRIGADE_SENTINEL(*bb))); + apr_bucket_brigade *temp_bb = *bb; + *bb = apr_brigade_split(temp_bb, dptr); + apr_brigade_destroy(temp_bb); } return; @@ -2549,20 +2535,13 @@ static void send_parsed_content(apr_bucket_brigade **bb, request_rec *r, if (content_head == NULL) { content_head = dptr; } - tmp_dptr = ctx->head_start_bucket; if (!APR_BRIGADE_EMPTY(ctx->ssi_tag_brigade)) { - while (!APR_BRIGADE_EMPTY(ctx->ssi_tag_brigade)) { - tmp_bkt = APR_BRIGADE_FIRST(ctx->ssi_tag_brigade); - apr_bucket_delete(tmp_bkt); - } + apr_brigade_cleanup(ctx->ssi_tag_brigade); } else { - do { - tmp_bkt = tmp_dptr; - tmp_dptr = APR_BUCKET_NEXT (tmp_dptr); - apr_bucket_delete(tmp_bkt); - } while ((tmp_dptr != content_head) && - (tmp_dptr != APR_BRIGADE_SENTINEL(*bb))); + apr_bucket_brigade *temp_bb = *bb; + *bb = apr_brigade_split(temp_bb, content_head); + apr_brigade_destroy(temp_bb); } if (ctx->combined_tag == tmp_buf) { memset (ctx->combined_tag, '\0', ctx->tag_length); @@ -2582,10 +2561,7 @@ static void send_parsed_content(apr_bucket_brigade **bb, request_rec *r, ctx->directive_length = 0; if (!APR_BRIGADE_EMPTY(ctx->ssi_tag_brigade)) { - while (!APR_BRIGADE_EMPTY(ctx->ssi_tag_brigade)) { - tmp_bkt = APR_BRIGADE_FIRST(ctx->ssi_tag_brigade); - apr_bucket_delete(tmp_bkt); - } + apr_brigade_cleanup(ctx->ssi_tag_brigade); } ctx->state = PRE_HEAD; @@ -2602,12 +2578,8 @@ static void send_parsed_content(apr_bucket_brigade **bb, request_rec *r, /* Inside a false conditional (if, elif, else), so toss it all... */ if ((dptr != APR_BRIGADE_SENTINEL(*bb)) && (!(ctx->flags & FLAG_PRINTING))) { - apr_bucket *free_bucket; - do { - free_bucket = dptr; - dptr = APR_BUCKET_NEXT (dptr); - apr_bucket_delete(free_bucket); - } while (dptr != APR_BRIGADE_SENTINEL(*bb)); + apr_brigade_cleanup(*bb); + dptr = APR_BRIGADE_SENTINEL(*bb); } else { /* Otherwise pass it along... */ ap_pass_brigade(f->next, *bb); /* No SSI tags in this brigade... */ -- 2.50.1