Revert this patch. It indicates some fundamental brokenness with the
apr_filepath_root() fn, which should simply return '/' for an absolute
path on (most) unix, and advance the path pointer to the first non-'/'
character [if only Win32 and others were so simple ;-]
Cliff Woolley [Fri, 24 Aug 2001 01:26:31 +0000 (01:26 +0000)]
I don't know if this is the Right Way, but it certainly does make things
work better right now. httpd-test is much much happier with this patch
(ie, we can serve pages again :) I'm still seeing issues with mod_include,
but that's probably a different problem... will investigate.
Increase security in core.c by testing (as we merge the path) that the
URI does not go above the DocumentRoot (as defined by the OS, not by
the URI specification), and give us the true name.
When we are done, note the name is canonical for directory_walk.
Whoops. To explain, we won't dup filename unless it really didn't match
in the first place. We are about to abuse test_filename, so don't try
using that copy.
Add a canonical_filename value (should remain the r->filename identity)
so we can tell if a 3rd party module broke the canonical form of the
filename by not calling apr_filepath_merge().
Rather than continuing to canonicalize within directory_walk (very time
consuming on all but *nix systems) we temporarily canonicalize to compare
the results of the many merges, and fail on a mismatch.
The apr_filepath_merge and ap_server_root_relative calls now merge the
file _by canonicalizing it_. That includes resolving all /../, /./,
and // misnomers.
A minor effort is required to figure out who all munges the r->filename
in an inappropriate manner.
The final (return to optimized state) probably involves setting an
r->goodname argument to r->filename, every time we properly merge
through ap_server_root_relative or apr_filepath_merge().
Overhauled ap_server_root_relative, so that it now changes any path
to canonical form through apr. Also assures that a change to the
ServerRoot through a -C option takes effect before locating the
httpd.conf file.
Performance death notices. Note that we shouldn't have EVER coded a
module with a fixed path ... the config phase should take the proxy/
path and ap_server_root_relative() it at startup.
Optimize out what is a very expensive in-request call to
ap_server_root_relative (and is becoming more expensive).
Now the call happens in the config phase where it belongs.
Note someone can hop in and transpose the stat and open
with an open and getfileinfo if you are a performance hound.
This was copied as a test of the ap_r[put|putc|write|printf] family of
functions. Since those don't seem to be going anywhere, this test is
redundant and a maintance headache.
Paul J. Reder [Thu, 23 Aug 2001 15:45:49 +0000 (15:45 +0000)]
Fix for mod_include. Ryan's patch to check error
codes put a return in the wrong place. Also, the
include handler return code wasn't being checked.
I don't like macros with returns, so I converted
SPLIT_AND_PASS_PRETAG_BUCKETS into a function.
Martin Kraemer [Thu, 23 Aug 2001 15:17:02 +0000 (15:17 +0000)]
My first try at relocating the manual tree outside of the htdocs/ directory.
It will now reside in the ServerRoot, alongside with .../man/ and .../icons/
and .../htdocs/
-
Please review the config.layout entries for the vendor specific entries,
I supplied sensible defaults but you may disagree.
Reviewed by: William A. Rowe, Jr., Joshua Slive, Rich Bowen
Bill Stoddard [Thu, 23 Aug 2001 14:15:00 +0000 (14:15 +0000)]
Experimental cache based on Graham Leggett's layered cache design. mod_cache
implements a quick handler, and three filters. The filters are
CACHE_IN for loading the cache, CACHE_OUT for serving content out of the cache
and CACHE_CONDITIONAL, which handles stale entries in the cache.
mod_cache implements code that makes RFC compliant caching decisions. It
interfaces with the actual storage mechanism via calls to functions defined in
cache_storage.c. This commit includes a simple in memory (malloc'ed memory)
cache implementation that demonstrates autoloading and serving files
keyed on URL.
This is not even close to production ready. You have been warned :-)
Doug MacEachern [Thu, 23 Aug 2001 04:15:37 +0000 (04:15 +0000)]
fix part of PR #7528
"UnsetEnv does not work from main body of httpd.conf"
PR also complains:
"also does not unsetenv()", but this fix does not address that
(i doubt unsetenv is portable or threadsafe)
PR:
Obtained from:
Submitted by:
Reviewed by:
Cliff Woolley [Thu, 23 Aug 2001 00:21:40 +0000 (00:21 +0000)]
Simplify the apr_read_type_e vs. ap_input_mode_t silliness. The two
are compatible (due to our early abort when PEEK mode is requested),
so we don't have to go to so much effort to convert from one to the other.
Complete the rename of the ssl_scache_status_register and
ssl_ext_proxy_register (which has yet to be renamed for it's
future location, since I'm not going further at the moment
with implementing it's functionallity, all my focus is on
the ssl_var_register arm.)
Doug MacEachern [Wed, 22 Aug 2001 21:37:15 +0000 (21:37 +0000)]
remove #if 0-ed ssl_hook_NewConnection code; was only left for reference,
no longer needed
remove #if 0-ed ssl_hook_TimeoutConnection code; ssl no longer talks directly
to the socket
PR:
Obtained from:
Submitted by: madhu
Reviewed by: dougm
Doug MacEachern [Wed, 22 Aug 2001 20:43:30 +0000 (20:43 +0000)]
v2 of sterlings segv fix
always initialize the extension_info hash rather than checking that it is
!= NULL
PR:
Obtained from:
Submitted by: John Sterling <sterling@covalent.net>
Reviewed by: dougm
Jeff Trawick [Wed, 22 Aug 2001 18:58:36 +0000 (18:58 +0000)]
simplify some code in output_results() just a bit to avoid a
bug in gcc 2.7.2.3 on FreeBSD 3.4; didn't hit the problem with
-O2; did hit the problem with no -O
Change the new-httpd@apache.org references to dev@httpd.apache.org.
There are some references just to "new-httpd" throughout - I left
these intact as I'm not sure what the nickname for the new list is
(dev@httpd?).
Doug MacEachern [Wed, 22 Aug 2001 16:59:26 +0000 (16:59 +0000)]
rather than creating small 1024 byte buckets of output data,
create a transient bucket pointing directly to the BIO mem buff.
this makes for a dramatic increase in performance. previously,
downloading large files (2Mb-5Mb-ish) made my laptop start to
smoke from the fan spinning so fast to cool the cpu.
also, apache stylize churn_output()
PR:
Obtained from:
Submitted by:
Reviewed by:
Ensure that libtool does the installation for us. This way we will actually
copy over the binaries rather than libtool wrapper scripts which would
copy the binaries to .libs/lt-* at first execution.
Reviewed by: Greg Stein
Doug MacEachern [Wed, 22 Aug 2001 15:30:37 +0000 (15:30 +0000)]
destroy the brigade when we are done with it, rather than remove
one bucket at a time. prevents a problem when downloading large files.
also change ssl_io_filter_Output to apache style
and change some variable names that should make the code easier to
read/understand, e.g. pbbIn -> bb, pbktIn -> bucket
PR:
Obtained from:
Submitted by:
Reviewed by:
We don't have rules.mk.in, so autoconf/m4/sed will overwrite the good
rules.mk with a blank file.
This gets us building again. From what I see of rbb's libtool 1.4 commit,
I didn't see any change to rules.mk that would require variable
substitution. Ryan?