]> granicus.if.org Git - apache/commitdiff
Add generic support for reference-counting the resources used by
authorTony Finch <fanf@apache.org>
Sat, 19 Aug 2000 06:04:57 +0000 (06:04 +0000)
committerTony Finch <fanf@apache.org>
Sat, 19 Aug 2000 06:04:57 +0000 (06:04 +0000)
buckets, and alter the HEAP and MMAP buckets to use it. Change
the way buckets are initialised to support changing the type of
buckets in place, and use it when setting aside TRANSIENT buckets.
Change the implementation of TRANSIENT buckets so that it can be
mostly shared with IMMORTAL buckets, which are now implemented.

Reviewed by: rbb

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@86115 13f79535-47bb-0310-9956-ffa450edef68

modules/http/http_core.c
modules/http/http_protocol.c

index cb6761b04c4e690f43036973648117e156aac2e4..7c4d13430d394bddade1e56c8385bff5183134a9 100644 (file)
@@ -2923,7 +2923,6 @@ static int chunk_filter(ap_filter_t *f, ap_bucket_brigade *b)
 {
     ap_bucket *dptr = b->head;
     int len = 0;
-    int tempint = 0;
     char lenstr[6];
     int hit_eos = 0;
 
@@ -2938,11 +2937,11 @@ static int chunk_filter(ap_filter_t *f, ap_bucket_brigade *b)
     }
 
     apr_snprintf(lenstr, 6, "%x\r\n", len);
-    dptr = ap_bucket_transient_create(lenstr, strlen(lenstr), &tempint);
+    dptr = ap_bucket_create_transient(lenstr, strlen(lenstr));
     b->head->prev = dptr;
     dptr->next = b->head;
     b->head = dptr;
-    dptr = ap_bucket_transient_create("\r\n", 2, &tempint);
+    dptr = ap_bucket_create_transient("\r\n", 2);
     if (hit_eos) {
         b->tail->prev->next = dptr;
         dptr->prev = b->tail->prev;
@@ -2954,7 +2953,7 @@ static int chunk_filter(ap_filter_t *f, ap_bucket_brigade *b)
     }
 
     if (hit_eos && len != 0) {
-        dptr = ap_bucket_transient_create("0\r\n\r\n", 5, &tempint);
+        dptr = ap_bucket_create_transient("0\r\n\r\n", 5);
         b->tail->prev->next = dptr;
         dptr->prev = b->tail->prev;
         b->tail->prev = dptr;
index 864782d0187da9f08c48b1b1bba780a334dbc57a..4f1b9b382f3ce325c4509742c56bf78c40e23f98 100644 (file)
@@ -1330,7 +1330,7 @@ static void end_output_stream(request_rec *r)
     ap_bucket_brigade *bb;
 
     bb = ap_brigade_create(r->pool);
-    ap_brigade_append_buckets(bb, ap_bucket_eos_create());
+    ap_brigade_append_buckets(bb, ap_bucket_create_eos());
     ap_pass_brigade(r->filters, bb);
 }
 
@@ -2521,8 +2521,7 @@ API_EXPORT(size_t) ap_send_mmap(apr_mmap_t *mm, request_rec *r, size_t offset,
      * until after the commit to actually write the code.
      */
     bb = ap_brigade_create(r->pool);
-    ap_brigade_append_buckets(bb, 
-                              ap_bucket_mmap_create(mm, mm->size, &bytes_sent));
+    ap_brigade_append_buckets(bb, ap_bucket_create_mmap(mm, 0, mm->size));
     bytes_sent = ap_pass_brigade(r->filters, bb);
 
     return bytes_sent;
@@ -2532,15 +2531,13 @@ API_EXPORT(size_t) ap_send_mmap(apr_mmap_t *mm, request_rec *r, size_t offset,
 API_EXPORT(int) ap_rputc(int c, request_rec *r)
 {
     ap_bucket_brigade *bb = NULL;
-    apr_ssize_t written;
     char c2 = (char)c;
 
     if (r->connection->aborted)
         return EOF;
 
     bb = ap_brigade_create(r->pool);
-    ap_brigade_append_buckets(bb,
-                              ap_bucket_transient_create(&c2, 1, &written)); 
+    ap_brigade_append_buckets(bb, ap_bucket_create_transient(&c2, 1)); 
     ap_pass_brigade(r->filters, bb);
 
     return c;
@@ -2549,25 +2546,24 @@ API_EXPORT(int) ap_rputc(int c, request_rec *r)
 API_EXPORT(int) ap_rputs(const char *str, request_rec *r)
 {
     ap_bucket_brigade *bb = NULL;
-    apr_ssize_t written;
+    apr_size_t len;
 
     if (r->connection->aborted)
         return EOF;
     if (*str == '\0')
         return 0;
-    
+
+    len = strlen(str);
     bb = ap_brigade_create(r->pool);
-    ap_brigade_append_buckets(bb, 
-                           ap_bucket_transient_create(str, strlen(str), &written)); 
+    ap_brigade_append_buckets(bb, ap_bucket_create_transient(str, len));
     ap_pass_brigade(r->filters, bb);
 
-    return written;
+    return len;
 }
 
 API_EXPORT(int) ap_rwrite(const void *buf, int nbyte, request_rec *r)
 {
     ap_bucket_brigade *bb = NULL;
-    apr_ssize_t written;
 
     if (r->connection->aborted)
         return EOF;
@@ -2575,9 +2571,9 @@ API_EXPORT(int) ap_rwrite(const void *buf, int nbyte, request_rec *r)
         return 0;
 
     bb = ap_brigade_create(r->pool);
-    ap_brigade_append_buckets(bb, ap_bucket_transient_create(buf, nbyte, &written)); 
+    ap_brigade_append_buckets(bb, ap_bucket_create_transient(buf, nbyte)); 
     ap_pass_brigade(r->filters, bb);
-    return written;
+    return nbyte;
 }
 
 API_EXPORT(int) ap_vrprintf(request_rec *r, const char *fmt, va_list va)