]> granicus.if.org Git - apache/commitdiff
Merge r1242798 from trunk:
authorJim Jagielski <jim@apache.org>
Thu, 2 Aug 2012 13:04:51 +0000 (13:04 +0000)
committerJim Jagielski <jim@apache.org>
Thu, 2 Aug 2012 13:04:51 +0000 (13:04 +0000)
* 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.

Submitted by: jorton
Reviewed/backported by: jim

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1368447 13f79535-47bb-0310-9956-ffa450edef68

STATUS
modules/proxy/mod_proxy_http.c

diff --git a/STATUS b/STATUS
index 7546937088b81a58ec0f125e6ebf16413147907c..eec91f4a0e0e71ab12941a38053b34c200eda5ec 100644 (file)
--- a/STATUS
+++ b/STATUS
@@ -94,13 +94,6 @@ PATCHES ACCEPTED TO BACKPORT FROM TRUNK:
      +1: rjung, sf, jim
      rjung: igalic: you applied it to trunk, care to vote?
 
-   * proxy: Treat EAGAIN as an error for a blocking read from the input filter
-     stack.
-     trunk patch: http://svn.apache.org/viewvc?view=revision&revision=1242798
-     2.4.x patch: Trunk patch applies.
-     +1: rjung, sf, jim
-     rjung: jorton: you applied it to trunk, care to vote?
-
    * authz: pass the provider name to parse_require_line as pool userdata
      This allows a single C function to implement several authz providers.
      trunk patch: http://svn.apache.org/viewvc?view=revision&revision=1351016
index bb1cd74fe785cc7d8c9216b0f6116a9e3073e0ac..b219854400d9991b3b4702fb92e5c5ba7e381870 100644 (file)
@@ -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);