From: Joe Orton Date: Thu, 11 Mar 2004 13:46:48 +0000 (+0000) Subject: * modules/dav/main/mod_dav.c (dav_finish_multistatus): New function; X-Git-Tag: pre_ajp_proxy~555 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=3f4721a9b63d1adaeb23a6669a7ee04e6c8eec57;p=apache * modules/dav/main/mod_dav.c (dav_finish_multistatus): New function; 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 --- diff --git a/modules/dav/main/mod_dav.c b/modules/dav/main/mod_dav.c index 7cedd53486..b4aa0e22cb 100644 --- a/modules/dav/main/mod_dav.c +++ b/modules/dav/main/mod_dav.c @@ -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, "" 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, "" 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, "" 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;