From: Jim Jagielski Date: Tue, 28 Nov 2006 20:36:47 +0000 (+0000) Subject: Protect against any sort of non-block read that X-Git-Tag: 2.3.0~2002 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c925d34bd352a0a74ea9075592a06b3a8563056d;p=thirdparty%2Fapache%2Fhttpd.git Protect against any sort of non-block read that 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 --- diff --git a/modules/http/http_filters.c b/modules/http/http_filters.c index 68991f661b8..57b780de743 100644 --- a/modules/http/http_filters.c +++ b/modules/http/http_filters.c @@ -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; }