diff options
author | Unbit <info@unbit.it> | 2014-12-05 15:08:18 +0100 |
---|---|---|
committer | Unbit <info@unbit.it> | 2014-12-05 15:08:18 +0100 |
commit | e6f4e7108f9f75719dd8076ff0ba50ffa03ef0f2 (patch) | |
tree | 5370df4c48d786502caf8815f3a77ac75c35b53c /apache2/mod_proxy_uwsgi.c | |
parent | 2d5b89d8eb5ed0aeda5237796246d1899cdc85d9 (diff) | |
download | uwsgi-e6f4e7108f9f75719dd8076ff0ba50ffa03ef0f2.tar.gz |
another attempt at fixing mod_proxy_uwsgi
Diffstat (limited to 'apache2/mod_proxy_uwsgi.c')
-rw-r--r-- | apache2/mod_proxy_uwsgi.c | 11 |
1 files 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); } |