summaryrefslogtreecommitdiff
path: root/os
diff options
context:
space:
mode:
authorEric Covener <covener@apache.org>2018-01-04 15:10:45 +0000
committerEric Covener <covener@apache.org>2018-01-04 15:10:45 +0000
commit98e9503120f43ea96c824429a95edc9577d1d5a4 (patch)
tree3620202bf1b191c6f9f5b3d2cf71272cbd830ffa /os
parent3a216c27765c5a982942c7f906c7e516ee5fd903 (diff)
downloadhttpd-98e9503120f43ea96c824429a95edc9577d1d5a4.tar.gz
Add "AcceptErrorsNonFatal" directive
This tweaks accept() failure processing by having ap_unixd_accept pass more errors up, and having the MPM's check against a macro to see if they are in a whitelist of non ENETDOWN/EMFILE kind of potential process-wide errors. Default behavior is still to exit. edit: MMN bump in 1820099. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1820098 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'os')
-rw-r--r--os/unix/unixd.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/os/unix/unixd.c b/os/unix/unixd.c
index 43645f09da..b939355289 100644
--- a/os/unix/unixd.c
+++ b/os/unix/unixd.c
@@ -320,6 +320,12 @@ AP_DECLARE(apr_status_t) ap_unixd_accept(void **accepted, ap_listen_rec *lr,
if (APR_STATUS_IS_EINTR(status)) {
return status;
}
+
+ /* Let the caller handle slightly more varied return values */
+ if (lr->use_specific_errors && ap_accept_error_is_nonfatal(status)) {
+ return status;
+ }
+
/* Our old behaviour here was to continue after accept()
* errors. But this leads us into lots of troubles
* because most of the errors are quite fatal. For