]> granicus.if.org Git - apache/commitdiff
Protect against any sort of non-block read that
authorJim Jagielski <jim@apache.org>
Tue, 28 Nov 2006 20:36:47 +0000 (20:36 +0000)
committerJim Jagielski <jim@apache.org>
Tue, 28 Nov 2006 20:36:47 +0000 (20:36 +0000)
would block. If ap_get_brigade() shows that, return
EAGAIN.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@480193 13f79535-47bb-0310-9956-ffa450edef68

modules/http/http_filters.c

index 68991f661b8e9f5adffef32bd0f1f01fb04f76c3..57b780de743b28daa203351803c9799b7dae4e1f 100644 (file)
@@ -216,7 +216,8 @@ apr_status_t ap_http_filter(ap_filter_t *f, apr_bucket_brigade *b,
 
             /* for timeout */
             if (block == APR_NONBLOCK_READ &&
-                rv == APR_SUCCESS && APR_BRIGADE_EMPTY(bb)) {
+                ( (rv == APR_SUCCESS && APR_BRIGADE_EMPTY(bb)) ||
+                  (APR_STATUS_IS_EAGAIN(rv)) )) {
                 return APR_EAGAIN;
             }
 
@@ -304,7 +305,8 @@ apr_status_t ap_http_filter(ap_filter_t *f, apr_bucket_brigade *b,
                                         block, 0);
                     /* Test timeout */
                     if (block == APR_NONBLOCK_READ &&
-                        rv == APR_SUCCESS && APR_BRIGADE_EMPTY(bb)) {
+                        ( (rv == APR_SUCCESS && APR_BRIGADE_EMPTY(bb)) ||
+                          (APR_STATUS_IS_EAGAIN(rv)) )) {
                         ctx->state = BODY_CHUNK_PART;
                         return APR_EAGAIN;
                     }