diff options
Diffstat (limited to 'nss_engine_kernel.c')
-rw-r--r-- | nss_engine_kernel.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/nss_engine_kernel.c b/nss_engine_kernel.c index 337ca67..721eedb 100644 --- a/nss_engine_kernel.c +++ b/nss_engine_kernel.c @@ -351,9 +351,18 @@ int nss_hook_Access(request_rec *r) && strcmp(apr_table_get(r->headers_in, "content-length"), "0"))) && !r->expecting_100) { int rv; + apr_size_t rsize; - /* Fill the I/O buffer with the request body if possible. */ - rv = nss_io_buffer_fill(r); + rsize = dc->nRenegBufferSize == UNSET ? DEFAULT_RENEG_BUFFER_SIZE : + dc->nRenegBufferSize; + + if (rsize > 0) { + /* Fill the I/O buffer with the request body if possible. */ + rv = nss_io_buffer_fill(r, rsize); + } else { + /* If the reneg buffer size is set to zero, just fail. */ + rv = HTTP_REQUEST_ENTITY_TOO_LARGE; + } if (rv) { ap_log_rerror(APLOG_MARK, APLOG_ERR, 0, r, |