*) adds compile-time/run time SSL-C version support
*) simplify a ton of overly-verbose legacy code
*) split the compiled-against v.s. runtime library
*) precache the results of the version string touchup
Jim Jagielski [Tue, 20 Mar 2007 15:48:23 +0000 (15:48 +0000)]
Even though we don't let our bb grow too large, still
honor flush buckets anyway... Note: maybe now we
should use something a little larger that AP_MIN_BYTES_TO_WRITE??
Jim Jagielski [Mon, 19 Mar 2007 20:04:56 +0000 (20:04 +0000)]
Some minor tweaks... return quickly if given an
empty bb, ensure EOS is the last bucket we handle
and if our chunked passing fails, then we need
to report that immediately.
Joe Orton [Mon, 19 Mar 2007 14:39:39 +0000 (14:39 +0000)]
Updates based on feedback from Ruediger and Jeff:
- correct use of "up" and "down" w.r.t. filter chain
- various grammar fixes
- recommend use of apr_brigade_cleanup() in the brigade structure section
- fix use of APR_BRIGADE_INSERT_HEAD in an example
- expand section on use of ap_save_brigade()
- simplify rule regarding fixed processing fixed # of buckets
Bradley Nicholes [Tue, 13 Mar 2007 17:53:22 +0000 (17:53 +0000)]
Remove the hardcoded size limit parameter for ldap_search_ext_s
and replace it with an APR_ defined value that is set according
to the LDAP SDK being used.
Joe Orton [Mon, 12 Mar 2007 15:05:50 +0000 (15:05 +0000)]
Generate etags consistently across 32-bit and 64-bit platforms:
* modules/http/http_etag.c (etag_uint64_to_hex): Renamed from
etag_ulong_to_hex; take an apr_uint64_t argument.
(ap_make_etag): Adjust to use new function and macro names.
Pass arguments directly to etag_uint64_to_hex without casting
down to unsigned long.
Joe Orton [Wed, 7 Mar 2007 13:44:15 +0000 (13:44 +0000)]
* support/logresolve.c (main): Simplify to avoid conditionals in handling
of lines without spaces: ensure a newline is printed for the cache-hit
path and fix a crash in apr_file_printf for the cache-miss path.
Nick Kew [Wed, 14 Feb 2007 13:34:38 +0000 (13:34 +0000)]
Return METHOD_NOT_ALLOWED, not FORBIDDEN, to a TRACE request when
TraceEnable is Off. This agrees with our documentation, and with
our Allow: header in response to OPTIONS.
Use the specified IPv4 prefix for documentation and examples (192.0.2.0/24)
from RFC3330 rather than non-reserved public internet addresses and some
RFC1918 addresses.
Ruediger Pluem [Mon, 12 Feb 2007 20:29:04 +0000 (20:29 +0000)]
* Save the key we generate during our first run of cache_generate_key_default
on each request in the request_config. During consecutive runs of
cache_generate_key_default during processing the request we restore it
from there as we might not be able to generate the same key again as
the ingredients used to compose the key might have changed and we constantly
must use a key that could be generated during the quick handler phase.
Jim Jagielski [Wed, 7 Feb 2007 14:26:37 +0000 (14:26 +0000)]
Further refinement for PR41056 / PR 19954 (mostly-fixed in r480135.)
We assume that a successful read but an empty brigade
is NOT cause for EAGAIN. Testing may or may not
confirm this assumption, in which case that test
may be required as well.
Ruediger Pluem [Tue, 6 Feb 2007 15:55:50 +0000 (15:55 +0000)]
* Add CacheIgnoreQueryString directive to cache requests with a query string
even if no expiration time is specified. Futhermore the query string will not
be used for key generation such that requests to the same URI path, but with
different query strings are mapped to the same cache entity. Turning this
setting to ON violates RFC 2616/13.9 and thus it is turned off by default.
Chris Darroch [Tue, 6 Feb 2007 00:25:15 +0000 (00:25 +0000)]
Introduce configuration groups to allow inheritance by virtual hosts of
database configurations from the main server. The post_config hook function
determines the minimal set of distinct configurations necessary so that
database connection pools are shared between virtual hosts whenever possible.
The SQL statements which should be prepared for each database connection
are now stored in a hash for each virtual host during the configuration
phase, and these hashes are merged in the normal manner using
apr_hash_overlay() with that of the main server. This allows for statements
to be de-registered by DBDPrepareSQL, if desired. The post_config hook
function then compares the statements registered for each virtual host
when determining if a separate configuration group is required. The
changes in r424798, r432560, r432562, and r466641, which still have problems
with configuration inheritance, are therefore no longer necessary.
Jeff Trawick [Sun, 4 Feb 2007 00:57:03 +0000 (00:57 +0000)]
Update the hash table of active script pids even on paths where a
script process wasn't created (storing 0 for the pid in that case).
Otherwise, the remembered pid is that of the last successful script
execution for this hash key.
Prior to this patch, the wrong process could be terminated in
rare circumstances:
- A CGI process with pid 10101 is forked for connection 99.
- After the CGI exits and some time elapses, some other process gets
pid 10101. (Connection 99 hasn't handled another CGI request yet.)
- The next time connection 99 has a CGI process, the fork()
or other early setup fails, so no CGI process is created.
- The remembered pid for connection 99 is still 10101. It
gets terminated (subject to permissions).
Ruediger Pluem [Wed, 24 Jan 2007 21:08:44 +0000 (21:08 +0000)]
* Fix a off-by-one error in parse_format_tag in the case that the last character
of the string to which *sa points is a %. In this case the while loop in
parse_format_string would call parse_format_tag with a pointer to a memory
region that starts one byte after the string to which s in parse_format_string
points to.
Chris Darroch [Tue, 16 Jan 2007 19:36:26 +0000 (19:36 +0000)]
We now create memory sub-pools for each DB connection and close DB
connections in a pool cleanup function. This simplifies the ap_dbd_acquire()
and ap_dbd_cacquire() functions, and also stops us from leaking ap_dbd_t
structures when using reslists.
We ensure that prepared statements are destroyed before their DB connection
is closed, in case any drivers would have problems cleaning up prepared
statements after the DB connection is closed.
The combination of reslists and memory pool cleanup functions was causing
segfaults when child processes exited, as reported in PR 39985. To prevent
this, we register dbd_destroy() as a cleanup that will execute prior to
the internal cleanup function registered by apr_reslist_create(). When the
reslist's memory pool is destroyed, dbd_destroy() informs dbd_destruct() not
to do anything when subsequently called by the reslist's internal cleanup
function.
We avoid the use of s->process->pool (the global pool) since it isn't
destroyed by exiting child processes in most multi-process MPMs.
Embed the .manifest files of all httpd binaries as a post-build
operation. This ensures the exported (Studio 97 generated) .mak
files create a usable Apache directly from the VC 8 (Studio 2005)
command line environment.
Sander Temme [Thu, 4 Jan 2007 01:07:45 +0000 (01:07 +0000)]
Get rid of the global trace_add in favor of specific trace functions tailored to the server run phase and callback context. Add the final trace function (for no context) and start moving the EXAMPLE_LOG_EACH stuff to ap_log_perror instead of directly writing to stdout.
Where any response is sent, return OK from the handler. Where there
is no response (but a status code) return the code. This patch adds
a great number of debugging emits for failed ap_pass_brigade calls,
to help diagnose failure cases, and disambiguates OK from APR_SUCCESS.
PR: 40470
Submitted by: wrowe, Matt Eaton <asf divinehawk.com>
Chris Darroch [Tue, 2 Jan 2007 20:13:57 +0000 (20:13 +0000)]
Create pmain pool and run modules' child_init hooks when entering
ap_mpm_run(), then destroy pmain when exiting ap_mpm_run().
The expected call to ap_run_child_init() appears to have been removed
in r89640. However, that call should presumably still be made once per
process, as in other single-process MPMs like the netware MPM.
Chris Darroch [Tue, 2 Jan 2007 19:40:34 +0000 (19:40 +0000)]
Destroy pmain pool when exiting ap_mpm_run() so that cleanups
registered in modules' child_init hooks are performed (e.g.,
mod_log_config and mod_dbd).
Chris Darroch [Tue, 2 Jan 2007 18:26:00 +0000 (18:26 +0000)]
Handle error conditions in dbd_construct() properly. Simplify
ap_dbd_open() and use correct arguments to apr_dbd_error() when
non-threaded. Register correct cleanup data in non-threaded
ap_dbd_acquire() and ap_dbd_cacquire(). Clean up configuration data
and merge function. Use ap_log_error() wherever possible.
Ruediger Pluem [Sat, 30 Dec 2006 20:07:14 +0000 (20:07 +0000)]
* If APR_FINFO_NAME is added to the list of wanted information, apr_stat
always returns APR_INCOMPLETE on Unix platforms in the case that the
call to the native stat / lstat did not fail. So we can safely assume
that the stat / lstat call has been successful in this case.
Sander Temme [Sat, 30 Dec 2006 02:40:07 +0000 (02:40 +0000)]
Ongoing crusade to separate callback tracing into single-process
single-thread part and thread-safe per-request or per-connection
(forthcoming) routines. Implement trace_startup() routine and call it
from startup hook handlers instead of the old trace_add routine. This
completely separates the global variable manipulation from the
request-specific stuff. Otherwise, it's mostly existing code.
Compile mod_authn_core on Win32. (The authz-dev branch forgot to add this.)
* modules/aaa/mod_authn_core.dsp: New DSP file for mod_authn_core.
* Apache.dsw: Add mod_authn_core as a dependency.
* Makefile.win: Add install targets