From e6f4e7108f9f75719dd8076ff0ba50ffa03ef0f2 Mon Sep 17 00:00:00 2001 From: Unbit Date: Fri, 5 Dec 2014 15:08:18 +0100 Subject: [PATCH] another attempt at fixing mod_proxy_uwsgi --- apache2/mod_proxy_uwsgi.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/apache2/mod_proxy_uwsgi.c b/apache2/mod_proxy_uwsgi.c index 9ea64517..663805db 100644 --- a/apache2/mod_proxy_uwsgi.c +++ b/apache2/mod_proxy_uwsgi.c @@ -365,7 +365,8 @@ static int uwsgi_response(request_rec *r, proxy_conn_rec *backend, proxy_server_ ap_set_content_type(r, apr_pstrdup(r->pool, buf)); } - for(;;) { + int finish = 0; + while(!finish) { rv = ap_get_brigade(rp->input_filters, bb, AP_MODE_READBYTES, mode, conf->io_buffer_size); @@ -401,7 +402,13 @@ static int uwsgi_response(request_rec *r, proxy_conn_rec *backend, proxy_server_ ap_proxy_buckets_lifetime_transform(r, bb, pass_bb); - ap_pass_brigade(r->output_filters, pass_bb); + // found the last brigade? + if (APR_BUCKET_IS_EOS(APR_BRIGADE_LAST(bb))) finish = 1; + + if (ap_pass_brigade(r->output_filters, pass_bb) != APR_SUCCESS || c->aborted) { + finish = 1; + } + apr_brigade_cleanup(bb); apr_brigade_cleanup(pass_bb); }