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... */
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;
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);
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;
/* 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... */