full advantage of the event MPM. Enable the ability for a module
to reverse the sense of a poll event from a read to a write or vice
versa.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1470683 13f79535-47bb-0310-9956-ffa450edef68
r1385216 broke building of mpm event with serf support. To fix,
* introduce APACHE_MPMPATH_INIT/FINISH similar to
APACHE_MODPATH_INIT/FINISH to create modules.mk and add
MOD_* vars to it.
* change APACHE_MPM_MODULE to only append to modules.mk, not
overwrite
* add APACHE_MPMPATH_INIT/FINISH to all MPMs
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1395252 13f79535-47bb-0310-9956-ffa450edef68
related state has to be re-initialized to the default values
at pre-config time, but that was handled inconsistently by
the MPMs, resulting in unexpected behavior when some of the
directives were removed across restart
move that necessary initialization from the MPMs to common
code run from core's pre-config; MPMs that need to override
defaults can do so by running after core's pre-config (the
NetWare MPM now does that)
the DEFAULT_MAX_REQUESTS_PER_CHILD compile setting wasn't useful
enough to keep
the simple MPM wasn't consistent in which of these directives
were respected and which weren't, and that hasn't changed
(see procmgr.max_requests_per_child vs. ap_max_requests_per_child)
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1086293 13f79535-47bb-0310-9956-ffa450edef68
presence of kqueue() on Leopard, matching APR's configuration.
Event and Simple no longer report that they are supported on Leopard, resolving
a broken default config file with --enable-mpms-shared=all on that platform.
(Event was loaded by default in httpd.conf, and it failed at startup when it
failed to obtain a thread-safe pollset.)
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@836165 13f79535-47bb-0310-9956-ffa450edef68
an MPM as a shared shared or dynamic module, primarily using the
APACHE_MPM_MODULE() function.
--enable-mpms-shared now builds/installs the MPMs as dynamic modules.
(But no LoadModule directives are added.)
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@832434 13f79535-47bb-0310-9956-ffa450edef68
. axe --with-mpm="shared" hack, replace with --enable-mpms-shared={all|list}
. replace singular MPM_NAME with access to the list of enabled MPMs
. replace singular MPM_SUBDIR with list MPM_SUBDIRS
. enable OS/2 MPM in same manner as others with configure support instead of
hard-coding in configure.in
Current state: MPMs are built as static archives (but not linked to httpd) with
--enable-mpms-shared, so they still have to be built with apxs to load
dynamically.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@832228 13f79535-47bb-0310-9956-ffa450edef68
(simple_setup_pollcb): Only pollcbs created using KQueue, EPoll or Event Ports operate correctly with removing sockets across threads.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@789064 13f79535-47bb-0310-9956-ffa450edef68
threaded, down to the MPM itself.
(server/mpm/FOO/config.m4, which runs before the actual MPM selection)
server/mpm/config.m4 makes some general platform checks that can be used
for MPM decisions, and contains some functions related to MPMs.
XXX The check here for whether APR_POLLSET_THREADSAFE is available
is a rough approximation and needs to be replaced by a run-time
check.
Replace the limited per-platform hard-coded MPM selection and the
current defaulting to event (whether or not it works) with a selection
based on which MPMs work on the platform, as reported by the MPMs
themselves.
(config2.m4, which runs after the MPMs record whether they are supported)
Order of preference:
WinNT (mingw32 only)
then Event
then Worker
then Prefork
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@766082 13f79535-47bb-0310-9956-ffa450edef68
. ap_mpm_query() can return APR_EGENERAL if called too early (for debugging a module)
. some hypothetical module which implements the mpm-query hook can bypass the MPM
with APR_ENOTIMPL
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@760864 13f79535-47bb-0310-9956-ffa450edef68
linked-in mod_unixd.c to handle that.
(The set of MPMs modified is the same set for which mod_unixd is enabled,
which is approximately equivalent to the set of Unix MPMs which anybody has
tried to maintain in recent memory.)
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@758278 13f79535-47bb-0310-9956-ffa450edef68
loadable MPM can't use the rewrite-args hook
(note across the table: the hooker hook has no retcode feedback, so I didn't init
the data there)
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@758224 13f79535-47bb-0310-9956-ffa450edef68
of integral parts which share global variables, functions, and macros
with the rest of httpd.
Converted now:
prefork, worker, event, simple, WinNT*
*WinNT hasn't been built or tested, and relies on a hack to include the
WinNT mpm.h to disable Unixy MPM support routines in mpm_common.c
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@757853 13f79535-47bb-0310-9956-ffa450edef68
for simple mpm.
- Before, simple wouldn't start without explicit
config, because default numbers were 0
- log messages "more" and "less" were misleading
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@730873 13f79535-47bb-0310-9956-ffa450edef68
* server/mpm/simple/simple_types.h
(simple_timer_t): Add Pool and a pointer to the associated simple core.
(simple_core_t): Remove dead timer ring, no recycling of timer events for now.
* server/mpm/simple/simple_event.h: Update register_timer signature with pool.
* server/mpm/simple/simple_event.c
(simple_register_timer): Allocate the event structure out of the pool,
and when this pool is destroyed, unregister the timer.
(simple_timer_run): New util function for running a timer and cleaning up
the pool callbacks.
* server/mpm/simple/simple_core.c
(simple_core_init): Remvoe dead timer ring
* server/mpm/simple/simple_run.c
(simple_main_setup_timers): Pass in pool to register call.
(simple_timer_invoke): Use new simple_timer_run function.
(simple_child_loop): Remove dead timer ring.
* server/mpm/simple/simple_io.c
(simple_io_process): Pass in pool when registering timers.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@709657 13f79535-47bb-0310-9956-ffa450edef68
mod_unixd.c is only os/unix/unixd.c, turned into a module.
(or more accurately, an ugly hack). Work in progress, and the
old unixd will have to go once the module build stuff is in place.
This re-introduces some of the unixd stuff (set user, group and chroot)
to mpm_simple, and should work equally well with existing MPMs.
It also paves the way for alternative privilege management schemes,
which can be implemented in alternative modules: this´ll be
necessary to run mpm_simple on non-unix-family platforms, and
of interest for alternative Unix implementations. By relegating
everything to a child_init hook, we can mix-and-match, though
weĺl need to add a regime that prevents just going right ahead
with nothing and running as root.
Round tuits permitting, we should be able to simplify unixd.h too,
and look towards eliminating it.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@708935 13f79535-47bb-0310-9956-ffa450edef68
* Move all variable declartions to the top of their blocks.
* Remove traiing comma on enum
* Only use C90 style comments.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@708813 13f79535-47bb-0310-9956-ffa450edef68