-*- coding: utf-8 -*-
Changes with Apache 2.2.4
+ *) core: Fix NONBLOCK status of listening sockets on restart/graceful
+ PR 37680. [Darius Davis <darius-abz free-range.com.au>]
+
*) mod_deflate: Rework inflate output and deflate output filter to fix several
issues: Incorrect handling of flush buckets, potential memory leaks,
excessive memory usage in inflate output filter for large compressed
http://mail-archives.apache.org/mod_mbox//httpd-dev/200609.mbox/%3c1404e5910609091218p84f4d2flc1000764b4966727@mail.gmail.com%3e
+1: trawick, wrowe, jerenkrantz
- * core: PR#37680
- Fix NONBLOCK status of listening sockets on restart/graceful
- http://svn.apache.org/viewvc?view=rev&revision=487901
- +1: niq, wrowe, rpluem
- wrowe adds; if use_nonblock was called multi_listeners
- I woulda +1'ed this on my first readthrough.
-
PATCHES PROPOSED TO BACKPORT FROM TRUNK:
* mpm_winnt: Fix return values from wait_for_many_objects.
int num_open;
const char *userdata_key = "ap_open_listeners";
void *data;
+#if AP_NONBLOCK_WHEN_MULTI_LISTEN
+ int use_nonblock;
+#endif
/* Don't allocate a default listener. If we need to listen to a
* port, then the user needs to have a Listen directive in their
* is already forgotten about by the time we call accept, we won't
* be hung until another connection arrives on that port
*/
- if (ap_listeners && ap_listeners->next) {
- for (lr = ap_listeners; lr; lr = lr->next) {
- apr_status_t status;
-
- status = apr_socket_opt_set(lr->sd, APR_SO_NONBLOCK, 1);
- if (status != APR_SUCCESS) {
- ap_log_perror(APLOG_MARK, APLOG_STARTUP|APLOG_ERR, status, pool,
- "unable to make listening socket non-blocking");
- return -1;
- }
+ use_nonblock = (ap_listeners && ap_listeners->next);
+ for (lr = ap_listeners; lr; lr = lr->next) {
+ apr_status_t status;
+
+ status = apr_socket_opt_set(lr->sd, APR_SO_NONBLOCK, use_nonblock);
+ if (status != APR_SUCCESS) {
+ ap_log_perror(APLOG_MARK, APLOG_STARTUP|APLOG_ERR, status, pool,
+ "unable to control socket non-blocking status");
+ return -1;
}
}
#endif /* AP_NONBLOCK_WHEN_MULTI_LISTEN */