summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrian Pane <brianp@apache.org>2006-01-22 03:35:46 +0000
committerBrian Pane <brianp@apache.org>2006-01-22 03:35:46 +0000
commit97993a7eb8a11e00d5c2996417b09e9a65f65167 (patch)
treee539cf1ce5e8ad0fb0d4ea83b62ebeb52621ebea
parent8240f8566e6f572cdc3a0ee0e123767816d37c41 (diff)
downloadhttpd-97993a7eb8a11e00d5c2996417b09e9a65f65167.tar.gz
Buffer partial lines within ap_core_input_filter() when doing
AP_MODE_GETLINE reads on a nonblocking connection git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/async-read-dev@371175 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--server/core_filters.c6
1 files changed, 1 insertions, 5 deletions
diff --git a/server/core_filters.c b/server/core_filters.c
index 0c06b90c41..2e18d6f082 100644
--- a/server/core_filters.c
+++ b/server/core_filters.c
@@ -153,12 +153,8 @@ int ap_core_input_filter(ap_filter_t *f, apr_bucket_brigade *b,
if (mode == AP_MODE_GETLINE) {
/* we are reading a single LF line, e.g. the HTTP headers */
rv = apr_brigade_split_line(b, ctx->b, block, HUGE_STRING_LEN);
- /* We should treat EAGAIN here the same as we do for EOF (brigade is
- * empty). We do this by returning whatever we have read. This may
- * or may not be bogus, but is consistent (for now) with EOF logic.
- */
if (APR_STATUS_IS_EAGAIN(rv)) {
- rv = APR_SUCCESS;
+ APR_BRIGADE_PREPEND(ctx->b, b);
}
return rv;
}