summaryrefslogtreecommitdiff
path: root/apache2/mod_proxy_uwsgi.c
diff options
context:
space:
mode:
authorUnbit <info@unbit.it>2014-12-05 15:08:18 +0100
committerUnbit <info@unbit.it>2014-12-05 15:08:18 +0100
commite6f4e7108f9f75719dd8076ff0ba50ffa03ef0f2 (patch)
tree5370df4c48d786502caf8815f3a77ac75c35b53c /apache2/mod_proxy_uwsgi.c
parent2d5b89d8eb5ed0aeda5237796246d1899cdc85d9 (diff)
downloaduwsgi-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.c11
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);
}