Loading CHANGES +0 −3 Original line number Diff line number Diff line -*- coding: utf-8 -*- Changes with Apache 2.5.0 *) core: Fix leak of duplicated listeners (socket descriptors) on restart when ListenCoresBucketsRatio is configured (positive). [Yann Ylavic] *) mod_http2: input buffering and dynamic flow windows for increased throughput. [Stefan Eissing] Loading server/listen.c +12 −20 Original line number Diff line number Diff line Loading @@ -516,23 +516,6 @@ static const char *alloc_listener(process_rec *process, char *addr, #define IS_IN6ADDR_ANY(addr) ((addr)->family == APR_INET6 \ && IN6_IS_ADDR_UNSPECIFIED(&(addr)->sa.sin6.sin6_addr)) static apr_status_t ap_close_duplicated_listeners(void *nil) { int i; /* Start from index 1 since either ap_duplicate_listeners() * was called and ap_listen_buckets[0] == ap_listeners, or * it wasn't and ap_num_listen_buckets == 0. */ for (i = 1; i < ap_num_listen_buckets; i++) { ap_close_listeners_ex(ap_listen_buckets[i]); } ap_num_listen_buckets = 0; ap_listen_buckets = NULL; return APR_SUCCESS; } /** * Create, open, listen, and bind all sockets. * @param process The process record for the currently running server Loading Loading @@ -884,15 +867,22 @@ AP_DECLARE(apr_status_t) ap_duplicate_listeners(apr_pool_t *p, server_rec *s, ap_listen_buckets = *buckets; ap_num_listen_buckets = *num_buckets; apr_pool_cleanup_register(p, NULL, ap_close_duplicated_listeners, apr_pool_cleanup_null); return APR_SUCCESS; } AP_DECLARE_NONSTD(void) ap_close_listeners(void) { int i; ap_close_listeners_ex(ap_listeners); ap_close_duplicated_listeners(NULL); /* Start from index 1 since either ap_duplicate_listeners() * was called and ap_listen_buckets[0] == ap_listeners, or * it wasn't and ap_num_listen_buckets == 0. */ for (i = 1; i < ap_num_listen_buckets; i++) { ap_close_listeners_ex(ap_listen_buckets[i]); } } AP_DECLARE_NONSTD(void) ap_close_listeners_ex(ap_listen_rec *listeners) Loading Loading @@ -925,6 +915,8 @@ AP_DECLARE(void) ap_listen_pre_config(void) { old_listeners = ap_listeners; ap_listeners = NULL; ap_listen_buckets = NULL; ap_num_listen_buckets = 0; ap_listenbacklog = DEFAULT_LISTENBACKLOG; ap_listencbratio = 0; Loading Loading
CHANGES +0 −3 Original line number Diff line number Diff line -*- coding: utf-8 -*- Changes with Apache 2.5.0 *) core: Fix leak of duplicated listeners (socket descriptors) on restart when ListenCoresBucketsRatio is configured (positive). [Yann Ylavic] *) mod_http2: input buffering and dynamic flow windows for increased throughput. [Stefan Eissing] Loading
server/listen.c +12 −20 Original line number Diff line number Diff line Loading @@ -516,23 +516,6 @@ static const char *alloc_listener(process_rec *process, char *addr, #define IS_IN6ADDR_ANY(addr) ((addr)->family == APR_INET6 \ && IN6_IS_ADDR_UNSPECIFIED(&(addr)->sa.sin6.sin6_addr)) static apr_status_t ap_close_duplicated_listeners(void *nil) { int i; /* Start from index 1 since either ap_duplicate_listeners() * was called and ap_listen_buckets[0] == ap_listeners, or * it wasn't and ap_num_listen_buckets == 0. */ for (i = 1; i < ap_num_listen_buckets; i++) { ap_close_listeners_ex(ap_listen_buckets[i]); } ap_num_listen_buckets = 0; ap_listen_buckets = NULL; return APR_SUCCESS; } /** * Create, open, listen, and bind all sockets. * @param process The process record for the currently running server Loading Loading @@ -884,15 +867,22 @@ AP_DECLARE(apr_status_t) ap_duplicate_listeners(apr_pool_t *p, server_rec *s, ap_listen_buckets = *buckets; ap_num_listen_buckets = *num_buckets; apr_pool_cleanup_register(p, NULL, ap_close_duplicated_listeners, apr_pool_cleanup_null); return APR_SUCCESS; } AP_DECLARE_NONSTD(void) ap_close_listeners(void) { int i; ap_close_listeners_ex(ap_listeners); ap_close_duplicated_listeners(NULL); /* Start from index 1 since either ap_duplicate_listeners() * was called and ap_listen_buckets[0] == ap_listeners, or * it wasn't and ap_num_listen_buckets == 0. */ for (i = 1; i < ap_num_listen_buckets; i++) { ap_close_listeners_ex(ap_listen_buckets[i]); } } AP_DECLARE_NONSTD(void) ap_close_listeners_ex(ap_listen_rec *listeners) Loading Loading @@ -925,6 +915,8 @@ AP_DECLARE(void) ap_listen_pre_config(void) { old_listeners = ap_listeners; ap_listeners = NULL; ap_listen_buckets = NULL; ap_num_listen_buckets = 0; ap_listenbacklog = DEFAULT_LISTENBACKLOG; ap_listencbratio = 0; Loading