]> granicus.if.org Git - apache/commitdiff
ap_get_client_block() now uses a brigade in core_request_config
authorJeff Trawick <trawick@apache.org>
Wed, 18 Oct 2000 17:42:44 +0000 (17:42 +0000)
committerJeff Trawick <trawick@apache.org>
Wed, 18 Oct 2000 17:42:44 +0000 (17:42 +0000)
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
modules/http/http_protocol.c

index a4028f95209671d1c8ef4e57a181708c0ba8b605..df6d07cdb4452917ee42f536e47e8400358d1881 100644 (file)
@@ -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 */
index 943f5bf4ec9ef77f1f7c66aa92cea03f0fe97637..dfaac63145a3792bed59777e7c74d4ac0c1bce14 100644 (file)
@@ -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)) {