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
*) remove DEFAULT_XFERLOG from main.c; it is never set/used
*) move ap_get_max_daemons() to ap_mpm.h
*) move DEFAULT_LISTENBACKLOG to mpm_common.h
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@88103 13f79535-47bb-0310-9956-ffa450edef68
mpm_common.c. These functions are only valid on some platforms,
so they should not be in the main-line code.
These functions are also not portable to non-unix platforms, so they don't
really belong in APR. Since they are only used in MPMs, for right now,
I am moving them to mpm_common.c
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@87755 13f79535-47bb-0310-9956-ffa450edef68
files need to specifically include stdio.h, or a particular apr_*.h
header.
*) Adjust callers of apr_create_process() to deal with the extra "const"
*) Add "const" to args of ap_os_create_privileged_process()
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@87080 13f79535-47bb-0310-9956-ffa450edef68
replacing the majority of fallible rv == APR_condition tests. But there
are lots more to fix, these are the obvious ones that already did proper
canonical error conversion.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@86405 13f79535-47bb-0310-9956-ffa450edef68
Note that several areas have not been tested as they apply to MPMs or APR
code that I can't test.
PR:
Obtained from:
Submitted by:
Reviewed by:
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@86133 13f79535-47bb-0310-9956-ffa450edef68
see src/lib/apr/apr_compat.h for most details.
Also a few minor nits to get Win32 to build.
PR:
Obtained from:
Submitted by:
Reviewed by:
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@86008 13f79535-47bb-0310-9956-ffa450edef68
dead process with status == SERVER_DEAD, check with pid == 0. This
makes somewhat more sense conceptually, and also matches the behavior
of MPMs that use a shmem scoreboard to track children.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@85950 13f79535-47bb-0310-9956-ffa450edef68
In time, this will be the MPM that allows each child process to have a
unique user id. I need a place to work and keep track of my changes.
Don't expect this to work until next week sometime.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@85902 13f79535-47bb-0310-9956-ffa450edef68
it to the system. That name should be of the format NAME_MPM where name
is something like DEXTER, MPMT_PTHREAD, SPMT_OS2, etc.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@85901 13f79535-47bb-0310-9956-ffa450edef68
. dexter/scoreboard.c needed apr_strings.h to get the right
function prototypes
. main/mpm_common.c needed to recognize that we were building
for dexter; otherwise, no ap_reclaim_child_processes() was
compiled and linking failed
(It would be nice to standardize on which preprocessor symbols
are checked for... mpmname_MPM seems nice enough. Didn't the
check for symbol mpmname (no "_MPM") come with mpmt.c?)
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@85899 13f79535-47bb-0310-9956-ffa450edef68
apr.h (defined in apr.h.in and apr.hw). This is needed -only- in APR
created files (true raw files) such as logs. It is not required in any
splat to screen (stderr/stdout) formatting, nor any html markup.
Some other modules slipped through in the prior apr_strings.h commit.
Sorry 'bout that.
PR:
Obtained from:
Submitted by:
Reviewed by:
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@85878 13f79535-47bb-0310-9956-ffa450edef68
the mpmt MPM look almost exactly like the original prefork MPM. Basically,
all that's left is re-naming the defined directives so they work with 1.3
config files. That will come later.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@85819 13f79535-47bb-0310-9956-ffa450edef68