From 4a3ad64814f30adff29b5198278a6cc7e93865d0 Mon Sep 17 00:00:00 2001 From: Jeff Trawick Date: Wed, 18 Oct 2000 17:42:44 +0000 Subject: [PATCH] ap_get_client_block() now uses a brigade in core_request_config instead of a brigade in core_dir_conf. For now, getline() and ap_get_client_block() share a brigade. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@86647 13f79535-47bb-0310-9956-ffa450edef68 --- include/http_core.h | 5 ++--- modules/http/http_protocol.c | 23 +++++++++++++++-------- 2 files changed, 17 insertions(+), 11 deletions(-) diff --git a/include/http_core.h b/include/http_core.h index a4028f9520..df6d07cdb4 100644 --- a/include/http_core.h +++ b/include/http_core.h @@ -321,7 +321,8 @@ extern AP_DECLARE_DATA module core_module; /* Per-request configuration */ typedef struct { - /* bucket brigade used by getline for look-ahead */ + /* bucket brigade used by getline for look-ahead and + * ap_get_client_block for holding left-over request body */ struct ap_bucket_brigade *bb; } core_request_config; @@ -431,8 +432,6 @@ typedef struct { apr_array_header_t *output_filters; apr_array_header_t *input_filters; - /* bucket brigade held by ap_get_client_block() between calls */ - struct ap_bucket_brigade *bb; } core_dir_config; /* Per-server core configuration */ diff --git a/modules/http/http_protocol.c b/modules/http/http_protocol.c index 943f5bf4ec..dfaac63145 100644 --- a/modules/http/http_protocol.c +++ b/modules/http/http_protocol.c @@ -1363,6 +1363,7 @@ request_rec *ap_read_request(conn_rec *conn) r->request_config = ap_create_request_config(r->pool); req_cfg = apr_pcalloc(r->pool, sizeof(core_request_config)); + req_cfg->bb = ap_brigade_create(r->pool); ap_set_module_config(r->request_config, &core_module, req_cfg); r->per_dir_config = r->server->lookup_defaults; @@ -2375,6 +2376,16 @@ AP_DECLARE(int) ap_setup_client_block(request_rec *r, int read_policy) return HTTP_REQUEST_ENTITY_TOO_LARGE; } +#ifdef AP_DEBUG + { + /* Make sure getline() didn't leave any droppings. */ + core_request_config *req_cfg = + (core_request_config *)ap_get_module_config(r->request_config, + &core_module); + AP_DEBUG_ASSERT(AP_BRIGADE_EMPTY(req_cfg->bb)); + } +#endif + return OK; } @@ -2439,14 +2450,10 @@ AP_DECLARE(long) ap_get_client_block(request_rec *r, char *buffer, int bufsiz) apr_int32_t timeout; ap_bucket *b, *old; const char *tempbuf; - core_dir_config *conf = - (core_dir_config *)ap_get_module_config(r->per_dir_config, - &core_module); - ap_bucket_brigade *bb = conf->bb; - - if (!bb) { - conf->bb = bb = ap_brigade_create(r->pool); - } + core_request_config *req_cfg = + (core_request_config *)ap_get_module_config(r->request_config, + &core_module); + ap_bucket_brigade *bb = req_cfg->bb; do { if (AP_BRIGADE_EMPTY(bb)) { -- 2.50.1