]> granicus.if.org Git - apache/commitdiff
* modules/dav/main/mod_dav.c (dav_finish_multistatus): New function;
authorJoe Orton <jorton@apache.org>
Thu, 11 Mar 2004 13:46:48 +0000 (13:46 +0000)
committerJoe Orton <jorton@apache.org>
Thu, 11 Mar 2004 13:46:48 +0000 (13:46 +0000)
factored out, sends an EOS bucket after the response body.
(dav_send_multistatus, dav_method_propfind): Use it.

[might be related to PR 27576 if there is a real issue described
there]

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

modules/dav/main/mod_dav.c

index 7cedd534861345da6ab9ff62b064f8a8585a5ae5..b4aa0e22cb6195adca3a08e623834537aaac78c1 100644 (file)
@@ -508,6 +508,21 @@ static void dav_begin_multistatus(apr_bucket_brigade *bb,
     ap_fputs(r->output_filters, bb, ">" DEBUG_CR);
 }
 
+/* Finish a multistatus response started by dav_begin_multistatus: */
+static apr_status_t dav_finish_multistatus(request_rec *r,
+                                           apr_bucket_brigade *bb)
+{
+    apr_bucket *b;
+    
+    ap_fputs(r->output_filters, bb, "</D:multistatus>" DEBUG_CR);
+    
+    /* indicate the end of the response body */
+    b = apr_bucket_eos_create(r->connection->bucket_alloc);
+    APR_BRIGADE_INSERT_TAIL(bb, b);
+
+    /* deliver whatever might be remaining in the brigade */
+    return ap_pass_brigade(r->output_filters, bb);
+}
 
 static void dav_send_multistatus(request_rec *r, int status,
                                  dav_response *first,
@@ -527,10 +542,7 @@ static void dav_send_multistatus(request_rec *r, int status,
     }
     apr_pool_destroy(subpool);
 
-    ap_fputs(r->output_filters, bb, "</D:multistatus>" DEBUG_CR);
-
-    /* deliver whatever might be remaining in the brigade */
-    ap_pass_brigade(r->output_filters, bb);
+    dav_finish_multistatus(r, bb);
 }
 
 /*
@@ -2050,11 +2062,7 @@ static int dav_method_propfind(request_rec *r)
         return DONE;
     }
 
-    /* Finish up the multistatus response. */
-    ap_fputs(r->output_filters, ctx.bb, "</D:multistatus>" DEBUG_CR);
-
-    /* deliver whatever might be remaining in the brigade */
-    ap_pass_brigade(r->output_filters, ctx.bb);
+    dav_finish_multistatus(r, ctx.bb);
 
     /* the response has been sent. */
     return DONE;