From 358858ff36b52fd5e56e1dfa04ada202af90424c Mon Sep 17 00:00:00 2001 From: Ryan Bloom Date: Thu, 12 Apr 2001 20:06:50 +0000 Subject: [PATCH] The ap_f* functions should flush data to the filter that is passed in, not to the filter after the one passed in. The fixes a bug, where one filter is skipped when using ap_f*. Submitted by: Ryan Morgan git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@88832 13f79535-47bb-0310-9956-ffa450edef68 --- CHANGES | 4 ++++ include/util_filter.h | 6 +++--- server/util_filter.c | 6 +++--- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/CHANGES b/CHANGES index 1d89130149..f38a6f3963 100644 --- a/CHANGES +++ b/CHANGES @@ -1,5 +1,9 @@ Changes with Apache 2.0.17-dev + *) The ap_f* functions should flush data to the filter that is passed + in, not the the filter after the one passed in. + [Ryan Morgan ] + *) Make ab work again by changing its native types to apr types and formats. [Justin Erenkrantz ] diff --git a/include/util_filter.h b/include/util_filter.h index 1e1f4ab369..4784f8af97 100644 --- a/include/util_filter.h +++ b/include/util_filter.h @@ -402,7 +402,7 @@ AP_DECLARE(apr_status_t) ap_fflush(ap_filter_t *f, apr_bucket_brigade *bb); * @param nbyte The number of bytes in the data */ #define ap_fwrite(f, bb, data, nbyte) \ - apr_brigade_write(bb, ap_filter_flush, (f)->next, data, nbyte) + apr_brigade_write(bb, ap_filter_flush, f, data, nbyte) /** * Write a buffer for the current filter, buffering if possible. @@ -411,7 +411,7 @@ AP_DECLARE(apr_status_t) ap_fflush(ap_filter_t *f, apr_bucket_brigade *bb); * @param str The string to write */ #define ap_fputs(f, bb, str) \ - apr_brigade_puts(bb, ap_filter_flush, (f)->next, str) + apr_brigade_puts(bb, ap_filter_flush, f, str) /** * Write a character for the current filter, buffering if possible. @@ -420,7 +420,7 @@ AP_DECLARE(apr_status_t) ap_fflush(ap_filter_t *f, apr_bucket_brigade *bb); * @param c The character to write */ #define ap_fputc(f, bb, c) \ - apr_brigade_putc(bb, ap_filter_flush, (f)->next, c) + apr_brigade_putc(bb, ap_filter_flush, f, c) /** * Write an unspecified number of strings to the current filter diff --git a/server/util_filter.c b/server/util_filter.c index a7a51922e9..381cf03b51 100644 --- a/server/util_filter.c +++ b/server/util_filter.c @@ -279,7 +279,7 @@ AP_DECLARE(apr_status_t) ap_fflush(ap_filter_t *f, apr_bucket_brigade *bb) b = apr_bucket_flush_create(); APR_BRIGADE_INSERT_TAIL(bb, b); - return ap_pass_brigade(f->next, bb); + return ap_pass_brigade(f, bb); } AP_DECLARE_NONSTD(int) ap_fputstrs(ap_filter_t *f, apr_bucket_brigade *bb, ...) @@ -288,7 +288,7 @@ AP_DECLARE_NONSTD(int) ap_fputstrs(ap_filter_t *f, apr_bucket_brigade *bb, ...) int res; va_start(args, bb); - res = apr_brigade_vputstrs(bb, ap_filter_flush, f->next, args); + res = apr_brigade_vputstrs(bb, ap_filter_flush, f, args); va_end(args); return res; } @@ -298,7 +298,7 @@ AP_DECLARE_NONSTD(int) ap_fprintf(ap_filter_t *f, apr_bucket_brigade *bb, const int res; va_start(args, fmt); - res = apr_brigade_vprintf(bb, ap_filter_flush, f->next, fmt, args); + res = apr_brigade_vprintf(bb, ap_filter_flush, f, fmt, args); va_end(args); return res; } -- 2.50.1