From 9fc8386d2070eae00ef21e8ca05a4f35ead79d2d Mon Sep 17 00:00:00 2001 From: Ryan Bloom Date: Tue, 7 Aug 2001 17:57:44 +0000 Subject: [PATCH] Greatly simplify the ap_http_filter logic, by using the apr_brigade_partition function. This should also remove a warning from the Windows build, because apr_off_t and apr_size_t aren't the same size. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@89997 13f79535-47bb-0310-9956-ffa450edef68 --- modules/http/http_protocol.c | 33 ++------------------------------- 1 file changed, 2 insertions(+), 31 deletions(-) diff --git a/modules/http/http_protocol.c b/modules/http/http_protocol.c index d8c0c413a6..a2e0fa370b 100644 --- a/modules/http/http_protocol.c +++ b/modules/http/http_protocol.c @@ -656,37 +656,8 @@ apr_status_t ap_http_filter(ap_filter_t *f, apr_bucket_brigade *b, ap_input_mode ### we could probably just use brigade_partition() in here. */ - while (!APR_BRIGADE_EMPTY(ctx->b)) { - const char *ignore; - - e = APR_BRIGADE_FIRST(ctx->b); - if ((rv = apr_bucket_read(e, &ignore, &len, mode)) != APR_SUCCESS) { - /* probably APR_IS_EAGAIN(rv); socket state isn't correct; - * remove log once we get this squared away */ - ap_log_error(APLOG_MARK, APLOG_ERR, rv, f->c->base_server, - "apr_bucket_read"); - return rv; - } - - if (len) { - /* note: this can sometimes insert empty buckets into the - * brigade, or the data might come in a few characters at - * a time - don't assume that one call to apr_bucket_read() - * will return the full string. - */ - if (*readbytes < len) { - apr_bucket_split(e, *readbytes); - *readbytes = 0; - } - else { - *readbytes -= len; - } - APR_BUCKET_REMOVE(e); - APR_BRIGADE_INSERT_TAIL(b, e); - break; /* once we've gotten some data, deliver it to caller */ - } - apr_bucket_delete(e); - } + apr_brigade_partition(ctx->b, *readbytes, &e); + b = apr_brigade_split(ctx->b, e); /* ### this is a hack. it is saying, "if we have read everything ### that was requested, then we are at the end of the request." -- 2.40.0