Obtained from:
Submitted by: Paul J. Reder
Reviewed by:
Remove the MPM_SYNC_CHILD_TABLE macro since there is no longer a scoreboard
file that needs to be synched.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@94308 13f79535-47bb-0310-9956-ffa450edef68
its help entry. Requires the use of a extern string rather than a function
call for the initialization to be valid in the macro (Thx to Jeff!).
In the meantime, bump down the error logging until we deal with true
default and configured setting information ala 1.3.
PR:
Obtained from:
Submitted by:
Reviewed by:
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@94062 13f79535-47bb-0310-9956-ffa450edef68
the admin regarding valid values for AcceptMutex. Should also
tell 'em what "default" actually maps to, but that can wait.
PR:
Obtained from:
Submitted by:
Reviewed by:
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@94055 13f79535-47bb-0310-9956-ffa450edef68
in the situation where MaxClients is very high but
much fewer servers are actually started at the time of the
restart.
The way we notify an entire generation to die at once is
changed so that we don't have to use the pod (and deal with
the ease of filling the kernel pipe buffer).
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@93999 13f79535-47bb-0310-9956-ffa450edef68
of Jeff Trawick's style changes to the first patches. Doesn't include
the fixes to ssl [more complex], and we won't trap errors that involve
ap_serverroot, since we presume that was normalized on the way in.
Therefore, testing ap_server_root_relative(DEFAULT_FOO) cases
should never become necessary.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@93965 13f79535-47bb-0310-9956-ffa450edef68
pointer math. This is required for portable scoreboards.
vhost becomes the 'vhost name string' so it now survives ap_generation
clicks. next was apparently never used.
This patch also accounts for the changes to the apr_shm api, and gives
Win32 the magic of a shared scoreboard.
Breakage aplenty on non-win32 platforms, I suspect, but this radical
surgery, and culling of unused functions, was really, really needed.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@92791 13f79535-47bb-0310-9956-ffa450edef68
connects (dislodging a doomed child from the accept mutex). No longer
do we assume that the child is listening to 127.0.0.1, but instead
we just pick the first hostname/port from the listen rec.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@92437 13f79535-47bb-0310-9956-ffa450edef68
morning, you will usually see lots ( >50 ) of old generation processes
happily serving requests with yesterday's config. Late in the afternoon, they
are usually gone due to MaxRequestsPerChild and perform_idle_server_maintenance.
ap_mpm_pod_signal can time out during connect(), causing it to exit with an
error. If it was called by ap_mpm_pod_killpg during graceful restart,
ap_mpm_pod_killpg will exit immediately. This can cause us to not write
enough characters to the pod to kill off all the old generation children.
This fix decouples the loop which writes to the pod from the loop which
generates dummy connect()s. The connect()s aren't as important as
writing to the pod when there is a steady stream of inbound connections.
also, close the socket and destroy the temporary pool if the connect()
fails.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@92411 13f79535-47bb-0310-9956-ffa450edef68
support it. This defines a symbol called AP_SIG_GRACEFUL in
ap_config_auto.h which will have the appropriate signal value. All
direct references to SIGWINCH have been replaced with AP_SIG_GRACEFUL.
On Linux 2.0, use SIGWINCH instead since SIGUSR1 is used by glibc
2.0's user-space threading library to control threads. All later
versions of Linux/glibc don't have this problem. (Not to mention the
security holes in older Linux versions which make it unsuitable for
use as a web server.) If your platform doesn't have SIGUSR1, use the
appropriate mojo in configure to define what your graceful restart
signal should be.
In theory, a configure switch could be added to allow the admin to
specify the appropriate signal that should be used. This is left
as an exercise to the reader for now.
The docs need to be updated. Since the signal is now configurable,
just saying SIGUSR1 for graceful restart isn't completely true. Also,
the apachectl functionality needs to be moved into httpd - this is
what Win32 does and it makes us consistent across platforms.
Roy issued a veto against use of SIGWINCH by default, so this should
resolve that veto.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@91076 13f79535-47bb-0310-9956-ffa450edef68
processes to use the accept mutex when starting as root and
using SysV sems for the accept mutex. Previously, this
combination would lead to fatal errors in the child server
processes. perchild can't use SysV sems because of security
issues.
translation: steal apache 1.3 code to call semop(IPC_SET) on
the semaphore to set permissions and uid/gid
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@90213 13f79535-47bb-0310-9956-ffa450edef68
. the selection of ap_sock_disable() is certainly ugly, but that may
need to be cleaned up in a different manner...
. the directive functions couldn't be AP_DECLARE() if they are to be
compatible with AP_INIT_TAKExxx(); this is an old restriction
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@90138 13f79535-47bb-0310-9956-ffa450edef68
MPMs use the same functions for all common MPM directives. This
should make it easier to catch all bugs in these directives once.
Everybody should check their favorite MPM to ensure that it still
compiles, and that these directives work. This is a big patch, and
although it looks good, and things compiled for me, that is no
garauntee that it will work on all platforms. :-)
Submitted by: Cody Sherr <csherr@covalent.net>
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@90132 13f79535-47bb-0310-9956-ffa450edef68
called by perform_idle_server_maintenance.
allocate & init one apr_sockaddr_t for the dummy connect at pod open time.
use a temporary subpool for the apr_socket_t
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@89612 13f79535-47bb-0310-9956-ffa450edef68
added an AP_MPMQ_MAX_DAEMON_USED to refer to the highest
daemon index actually used in the scoreboard. I also
updated the pertinent calls.
Paul J. Reder
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@89604 13f79535-47bb-0310-9956-ffa450edef68
functions. This allows APR programs to specify that a socket should
be passed to any child processes that are created. The inherit flag
is only meaningful if programs use apr_process_create(). This
also adds a couple of macros that allow APR types to set and unset
the inherit flag.
This also fixes Apache to use the new API.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@89557 13f79535-47bb-0310-9956-ffa450edef68
when the parent process wakes up a server process via connect(), use
an APR timeout on the connect() so that we don't hang for a long time
if there aren't server processes around to do accept()
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@89539 13f79535-47bb-0310-9956-ffa450edef68
pod_out; after that change, all read and write syscalls on the handles
failed because pod_in was only readable and pod_out was only writable
we could instead reverse the order of the parameters to apr_pipe_create
so that the descriptors returned by pipe() get put in the right place,
but it seems better to stick with APR terminology for what is the input
handle and what is the output handle
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@89335 13f79535-47bb-0310-9956-ffa450edef68
before this, no requests could be processed by prefork since after connect
from the client prefork would block reading the pod
the write handle to the pod probably doesn't have to be non-blocking, but
getting EAGAIN for the pipe-full condition, rather than blocking, is nice
for now since it would tend to indicate that something is FUBAR; on the other
hand, this probably needs to change in order to support more than 4K workers
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@89310 13f79535-47bb-0310-9956-ffa450edef68
it still doesn't handle the pipe being full for other reasons (bazillions
of child processes?), but I'm not sure that is a real occurrence
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@89294 13f79535-47bb-0310-9956-ffa450edef68
pass some initial testing, but it needs to be banged on more. It looks
like if the server gets a lot of requests to restart all at once, there
are potential problems, but other than that this does seem to solve our
current restart issues.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@89282 13f79535-47bb-0310-9956-ffa450edef68
conditional in the same way that the function's definition is so give it a
suitable macro that will be recogized by the scripts that make exports.c.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@88537 13f79535-47bb-0310-9956-ffa450edef68
query API can and should be extended in the future, but for now,
max_daemons, and threading or forking is a very good start.
Non-Unix MPM's do have the MPM query function, although there is no
garauntee that the information is perfect, please check.
Submitted by: Jon Travis <jtravis@covalent.net>
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@88437 13f79535-47bb-0310-9956-ffa450edef68