Instead of copying event/fdqueue.c code into existing mpm_unix.c, losing all
contributors (blame, since r105919...), will restart the series by svn-moving
event/fdqueue.[ch] to server/mpm_fdqueue.[ch] first.
The code is not really unix specific either, so this sounds better.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1821619 13f79535-47bb-0310-9956-ffa450edef68
The fdqueue code is not for WIN32 (per mpm_unix.c), and does not seem to
require all the #includes (system) it claimed (at least in .h).
[Reverted by r1821619]
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1821527 13f79535-47bb-0310-9956-ffa450edef68
This first step moves the content of server/mpm/event/fdqueue.c to
the existing server/mpm_unix.c file, and the server/mpm/event/fdqueue.h file
to trunk/server/mpm_unix.h (untouched for now, simple svn move).
Will follow up with the necessary changes to mpm_unix.* for common code.
[Reverted by r1821619]
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1821526 13f79535-47bb-0310-9956-ffa450edef68
Deregister all hooks first (in pre_cleanup), by doing it last we could still
have had them run when DSOs were unloaded.
Likewise, avoid double faults when handling fatal signals by restoring the
default handler before pconf is cleared (we can't ap_log_error there).
Finally, we need to ignore sig_term/restart (do nothing) when the main
process is exiting (i.e. ap_pglobal is destroyed), since retained_data are
freed.
Aimed to fix all faults in PR 61558.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1809973 13f79535-47bb-0310-9956-ffa450edef68
less intrusive.
Submitted by: Yingqi Lu <yingqi.lu@intel.com>
Modified/Committed by: ylavic
Add ListenCoresBucketsRatio which is a configurable ratio between the number of
CPU cores (online) and the number of listeners buckets to create, defaulting to
zero (so that listeners buckets become an opt-in, ie. ncpus / ratio > 1).
This could also be made an opt-out by using the previous hardcoded value (8) as
default.
Make ap_close_listeners() act on all the listeners (including duplicated ones),
since the function is also called externally (eg. mod_cgid, mod_ssl_ct and
possibly any third party module) to cleanup opened descriptors when a process
is forked (the duplicated listeners are kept in a scoped/static variable).
Add ap_close_listeners_ex() to close a single bucket of listeners, used by the
children to close unused duplicates and internally by ap_close_listeners().
Make ap_duplicate_listeners() compute the number of buckets to be used, instead
of each MPM. This number is now based on the above ratio and will not change
unless asked to (given *num_buckets < 1, that is when the MPM does not run in
one-process mode nor after a graceful restart).
Remove some global variables (mpm_listen, enable_default_listeners) previously
used to communicate between MPMs and ap_listen, since ap_duplicate_listeners()
API can now be used to do so.
Also rename num_buckets as ap_num_listen_buckets, and prefix have_so_reuseport
with ap_ (both printed by ap_log_common(), hence kept global).
Detect ap_have_so_reuseport once only at startup.
Restore dummy_connection() as before r1599531 since sending POD signals should
not depend on the number of listeners buckets (there is still one single socket
receiving the connections).
For each MPM (concerned), move the bucket data (pod, listeners and eventually
accept mutex) into a struct and instanciate an array of them (sized by the
number of buckets), for each child to use its own data according to its bucket
index, and the parent to maintain the whole.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1635521 13f79535-47bb-0310-9956-ffa450edef68
situations. Use them in most places where malloc, and friends are used.
This results in clean error messages in an out of memory situation instead of
segfaulting or silently malfunctioning. In some places, it just allows to
remove some logging code.
PR 51568, PR 51569, PR 51571.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1172686 13f79535-47bb-0310-9956-ffa450edef68
everywhere.
We know that the core module has module_index 0. Therefore we can save
some pointer operations in ap_get_module_config(cv, &core_module) and
ap_set_module_config(cv, &core_module, val). As these are called rather often,
this may actually have some (small) measurable effect.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1132781 13f79535-47bb-0310-9956-ffa450edef68
which had lost their scoreboard slot during a prior graceful
restart, calls to ap_unregister_extra_mpm_process() were hidden
if AP_DEBUG (maintainer mode) wasn't defined.
This resulted in an uninitialized generation variable being
passed through to the child_status hook.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1103932 13f79535-47bb-0310-9956-ffa450edef68
processes. Add end_generation hook for notification when the last
MPM child of a generation exits.
end_generation is implemented completely by core using the
child_status hook run by the MPM.
simple and mpmt_os2 MPMs don't currently run the child_status
hook, so neither hook is invoked with those MPMs.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1096609 13f79535-47bb-0310-9956-ffa450edef68
mpm_winnt.c: MinGW doesn't currently define the Windows
STACK_SIZE_PARAM_IS_A_RESERVATION symbol
mpm_unix.c: Bypass all this code on Windows (too much trouble
to keep it out of Makefile)
mpm_common.h: Skip over definitions of functions not available on
Windows to keep references out of exports.c.
PR: 49535
Submitted by: John Vandenberg <jayvdb gmail.com>
Minor tweaks by: trawick
Other commits for this PR: r1089950, r1089951, r1089954
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1090614 13f79535-47bb-0310-9956-ffa450edef68
ap_relieve_child_processes(): instead of requiring the MPM
to implement an otherwise-useless hook, just use a callback
function.
As I don't expect third-party MPM devs are following our day
to day progress, the API changes are considered part of
yesterday's MMN change.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1087085 13f79535-47bb-0310-9956-ffa450edef68
ap_{reclaim,relieve}_child_processes; those functions can
invoke the hook directly; the function ap_mpm_note_child_killed()
is useless
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1086953 13f79535-47bb-0310-9956-ffa450edef68