kill -l requires the short version of the signal (without SIG prefix).
(apachectl graceful was broken.)
The best way to do this is to change configure to internally represent
the signal without the SIG prefix and prepend SIG before substitution
(and export a version without the SIG prefix for apachectl).
This highlights why we want to move apachectl's core functionality into
httpd.
AFAICT, we have never created server configs of _all_ modules for _all_
contexts, only when they come up (e.g., a directive of that particular
module is provided) with the except that vhost containers complete the
initialization of all modules. I haven't stepped this, but it appears
to be correct.
This patch assures we can merge two incomplete directory sections
together. They will (obviously) need to be merged with a LHS default,
e.g. a vhost's or main server's default dir config. That's fine, this
just allows either the LHS or RHS value to be null, and for merging to
still succeed.
Jeff Trawick [Thu, 20 Sep 2001 17:54:51 +0000 (17:54 +0000)]
Currently, when the map-to-storage handler for TRACE returns DONE, the
caller -- ap_process_request_internal() -- catches that and returns
OK to its caller -- ap_process_request(). But ap_process_request(),
seeing OK, tries to run a handler. It needs to skip that if the
request was completed in ap_process_request_internal().
Ian Holsman [Thu, 20 Sep 2001 05:34:50 +0000 (05:34 +0000)]
Added New Option 'HTTPProxyOverrideReturnedErrors' which lets the server override
the error pages returned from the proxied server and replace them with the standard
server error handling on the main server.
Jeff Trawick [Wed, 19 Sep 2001 18:47:31 +0000 (18:47 +0000)]
if we're gonna trash the connection due to a queue overflow, at the
very least we should close the socket and write a log message (mostly
to aid debugging, as this is a showstopper problem)
this is no fix; there is a design issue to consider; hopefully this
will
There is still some stuff I'd like to do here, but I'll commit what
I have for the moment. I've done three things:
1. Emphasize that auth does not need to be in .htaccess.
2. Add detailed discussion of each of the auth directives (does this
belong here?)
3. Remove the AuthGroupFile /dev/null which shouldn't be necessary.
The call to apr_explode_localtime() in mod_log_config is one of the more
expensive operations in the httpd. This patch attempts to reduce the
overhead by caching the result for 15 seconds.
Submitted by: Brian Pane <bpane@pacbell.net>
Reviewed by: Cliff Woolley, Ryan Bloom, Dean Gaudet, Justin Erenkrantz
I was kinda hoping those (void)some_function() and (request_rec *)NULL
casts would go away before this committed, but alas I didn't say anything.
:-) This gets rid of them and a few others just like them that I also
found in worker.c.
Fix case where an included file may change but the shtml file has not -
since we returned Last-Modified/ETag headers, we said that it was possibly
cacheable. Wrong.
See RFC 2616 13.3.4 for more details (these are SHOULD/MAY clauses, so I
think we can discard them when we are dealing with dynamic data).
(Justin cleaned up the comment to cite RFC 2616.)
Submitted by: Ian Holsman <ianh@cnet.com>
Reviewed by: Justin Erenkrantz, Aaron Bannert, Brian Pane
This patch fixes a nasty bug in the worker MPM where the
state of the worker threads was not being reported back to the
scoreboard, and eventually all the threads running in the children
would be reported as being in the "C -- closing connection" state.
This would wreak havoc on the idle_server_maintenance() routine. Since
these threads would never be counted as idle, the server would
spawn children as fast as possible.
Switch back to SIGUSR1 for graceful restarts on all platforms that
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.
Ryan Bloom [Tue, 18 Sep 2001 21:14:18 +0000 (21:14 +0000)]
Cleanup the worker MPM. We no longer re-use transaction
pools. This incurs less overhead than shuffling the pools
around so that they can be re-used. Remove one of the
queue's condition variables. We just redefined the API to
state that you can't try to add more stuff than you allocated
segments for.
Revamp the API that mod_dav uses to talk to back end deadprop (propdb)
providers. The old API was really based on how the FS stored properties, but
sucked for other types of providers (SQL databases, Subversion, etc). This
new code is overall much cleaner as it moves from a DBM style API to one
tuned for actual mod_dav operation; it also more flexible/clearer for future
improvements (e.g. dropping props directly to the wire rather than buffering
in memory).
This new API allows the provider to better define namespace handling during
the output of the values, how values are serialized and stored, the mapping
between elements' namespaces and the internalized namespace storage, a
clearer mechanism for naming properties (dav_prop_name), and an explicit
rollback mechanism to deal with PROPPATCH atomicity.
Updated the FS provider (fs/dbm.c) to the new API, mostly by moving code
from main/props.c. Of course, with the new semantics, some big changes in
the namespace mapping were made.
Now that we have apr_datum_t, convert some uses of dav_datum over to
apr_datum_t (the two are equivalent).
Expose some of the DAVFS' internal DBM cover functions and have the locking
code use them directly, rather than thru the vtable. That vtable will be
changing shortly, so this shift is needed.
Remove the Win32 script-processing exception from mod_cgi, and
roll build_command_line/build_argv_list into a unified, overrideable
ap_cgi_build_command optional function.
Eliminates a ton of Win32 cruft from core.c for registry parsing.
Win32 (through the default handler, and newest changes to the
apr_proc_create fn) continues to serve .bat/.exe files. This is in
preparation for adding modules/arch/win32/mod_win32 for scripts.
Please review the mod_cgi.c behavior very carefully.
Temporary hack to ensure that the split results are within a brigade
attached to the proper pool. Otherwise, ctx->b would end up associated with
the request pool, and the SOCKET bucket from the CORE_IN filter would get
cleared at request end (thus the next request would go to CORE_IN for more
data and get APR_EOF, and figured there were no more requests).
This section of code was only triggered when a request had a body. The
symptom was closing the connection (even though it should have been a
keepalive) after the response was sent.
For more info, see Message-ID on dev@: <20010917061613.B466@lyra.org>
Found the persistent connection problem I've been observing. Nasty result of
the problems in the input filter stack. Time to rejigger, per the
discussions we've had.
Ryan Bloom [Wed, 12 Sep 2001 19:50:56 +0000 (19:50 +0000)]
Remove mod_tls. All of the filters in mod_tls can now be found in
mod_ssl. Also, mod_ssl is being kept up to date, while mod_tls is not,
so that if you use mod_tls, there are a lot of bugs, both security related,
and otherwise.
Ryan Bloom [Tue, 11 Sep 2001 18:38:21 +0000 (18:38 +0000)]
A very small optimization to the OLD_WRITE logic. This just makes us store
a pointer to the OLD_WRITE frec, and instead of using strcmp or strcasecmp,
we can just do a simple pointer comparison. This optimization is also
available to other modules.
Bill Stoddard [Mon, 10 Sep 2001 18:09:56 +0000 (18:09 +0000)]
Introduce the notion of a multi part cache object. Part of the cache_object
is common across any cache implementation, the other part is private to
the particular implementation (eg, mem_cache_object_t/mod_mem_cache).
Use a cache_handle_t allocated out of the request pool to hold references
to the callback functions and common cache object.
The cache_handle_t contains implementation specific callback functions and
a reference to a common cache_object_t. The cache_object_t contains
a reference to an implementation specific cache object extension (mem_cache_object_t
for example).
All this simplifies managing the callback function pointers (don't want to
save them in each cache entry) and collections of cache_object_t keyed
to a single url.
Ryan Bloom [Mon, 10 Sep 2001 13:45:12 +0000 (13:45 +0000)]
It is completely bogus that I feel I have to do this. I remain -1 for
doing this, but I won't veto it. I am 100% with JimJ on this. We are
making this decision at the wrong time, and for the wrong reasons. I
do not believe that this module ever belongs in the core, and I haven't
heard a single valid reason for using it. Even the SSL reason has been
removed in my mind, due to the fact that we are now thinking of
removing mod_gz if the correct cipher is used, because the correct cipher
will compress for us.
This patch is insufficient (highlights an existing problem) for OS2 and
Netware, especially, and any other platform with odd native requirements
for the PATH_TRANSLATED variable (where it should look like a filesystem
entity for non-unixish cgi's.)
The per_dir_merge overlay of AddInputFilter/AddOutputFilter must
absolutely replace a prior definition for the same file extension.
Picture AddOutputFilter Includes .html in a directory, and needing
to replace that behavior in a subdirectory which does not contain
SSI html files. This behavior must remain consistent to the other
mime behaviors, as documented in manual/mod/mod_mime.html
Ryan Bloom [Sat, 8 Sep 2001 01:10:29 +0000 (01:10 +0000)]
The threaded MPM not working is not because of httpd or APR. Threads
are horribly broken on FreeBSD, and there is nothing we can do to fix
them. Unless, of course, somebody wants to contribute code to the
FreeBSD project.
Jeff Trawick [Fri, 7 Sep 2001 14:01:26 +0000 (14:01 +0000)]
We finally got APR working well enough to support buffered reading
of .var files, so the .var file issue is gone.
The brokenness of the threaded MPM on FreeBSD is a FreeBSD issue, not
an Apache issue, as far as anyone can tell. I don't think this should
be in the STATUS file at all, unless somebody thinks we should issue a
big honking warning from configure if somebody tries to enable threaded.