summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoe Orton <jorton@apache.org>2012-02-10 14:52:25 +0000
committerJoe Orton <jorton@apache.org>2012-02-10 14:52:25 +0000
commite16536b2cd4128598a17b95ccc2087e6958ba791 (patch)
treeb2531d5f06081b16365f32e5de5793ff3318bc34
parentebbfee6de57bd3ce4c43a8dabafd18efb1da0d99 (diff)
downloadhttpd-e16536b2cd4128598a17b95ccc2087e6958ba791.tar.gz
* modules/proxy/mod_proxy_http.c (ap_proxy_http_process_response):
Treat EAGAIN as an error for a blocking read from the input filter stack. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1242798 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--modules/proxy/mod_proxy_http.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/modules/proxy/mod_proxy_http.c b/modules/proxy/mod_proxy_http.c
index 64b95a2fb7..97b8edd3d8 100644
--- a/modules/proxy/mod_proxy_http.c
+++ b/modules/proxy/mod_proxy_http.c
@@ -1964,8 +1964,9 @@ apr_status_t ap_proxy_http_process_response(apr_pool_t * p, request_rec *r,
/* ap_get_brigade will return success with an empty brigade
* for a non-blocking read which would block: */
- if (APR_STATUS_IS_EAGAIN(rv)
- || (rv == APR_SUCCESS && APR_BRIGADE_EMPTY(bb))) {
+ if (mode == APR_NONBLOCK_READ
+ && (APR_STATUS_IS_EAGAIN(rv)
+ || (rv == APR_SUCCESS && APR_BRIGADE_EMPTY(bb)))) {
/* flush to the client and switch to blocking mode */
e = apr_bucket_flush_create(c->bucket_alloc);
APR_BRIGADE_INSERT_TAIL(bb, e);