The real slim shady finally stood up. This patch segregates the fast
internal redirect logic back into http_request, the next patch will
actually fix it.
This was entirely broken. We cannot skip the location walk just because
we are in a file subrequest (think of a file server-status sitting in
the document root, this shouldn't be blindly served as a 'file'.)
Greg Ames [Sun, 5 Aug 2001 18:08:49 +0000 (18:08 +0000)]
Speed up the server's response to a spike in incoming workload
or restarts.
New processes aren't able to start all their threads right away
if other dying processes share the same scoreboard real estate.
So give empty process slots in the scoreboard top priority.
Jeff Trawick [Sat, 4 Aug 2001 11:40:16 +0000 (11:40 +0000)]
cosmetic changes only for a clean build; no serialization problems
addressed; I presume those are waiting for an APR-ization of the
queue/condition mechanism
Subtle variation for security. If the mod_mime file has nothing specific
to say about a given set of file extentions (and has only based the
resolved fields on the default language, encoding and content type)
then tell us we can ignore the result by leaving the exception list
entirely undefined. If mod_mime adds anything (a language, charset, or
whatnot) then proceed to use the file in the Multiviews evaluation,
otherwise mod_negotation will ignore the file found.
This points out a need for a slightly twisted DefaultClientLanguage,
as opposed to creating foo.html.html files. Either that, or introduce
a 'neutral' entity that the user can list (say, .default) for mod_mime
to declare it as a fallback language/encoding/content-type/handler.
Solve the major underlying problem of content negotation by passing
mod_negotiation the 'unresolved' parts of the path in a ->notes
array ap-mime-exceptions-list.
If mod_mime is given index.html.bad.en it will add index and bad
to the list (presuming html and en are both defined.)
mod_negotiation will decide if index and bad are it's fault (the
user requested index.html.bad[.*]) or if it's a messed up file
(say .old, .junk, or .bak).
The next patch to allow any-order negotiation should check each
of these list elements, so that asking for index.bad in the prior
example would succeed. Right now that request would fail because
.html was recognized, so it's not in the exceptions list. This
patch uses a simple strcmp to the given name.
Also, this patch allows any mod_mime processed file to be served,
even if the content type cannot be determined (think README.en).
This is crippled by the client expect headers and omitting the
default content type.
Save hundreds of cycles on every autoindex request by _not_ attempting
to to test the parent (..) sub request! This patch also allows the user
to see things that will redirect them. That way, the lnk or dir within
the directory is displayed correctly.
Also allows an ALT text entry other than DIR by providing AddAlt
^^DIRECTORY^^, as the user (might) expect to be allowed to do.
Add a timeout when making connections from within the proxy.
Now, if someone wants to add a special scoreboard state for proxy
attempting to make connection, be my guest.
Both the ftp and http proxies were erroneously sending a flush bucket after
an eos bucket. This had been put in place to repair a bug, but was covering
the symptoms, rather than providing the cure. Bug repaired, and kludge
removed.
That's enough for tonight ... gheesh. Allow 2xx + OK (0) results from
the subrequest to go out to the client. This doesn't address (..)
anomilies, which I will address in the a.m.
Fix some major brokenness. We were not validating that the autoindex
subrequest'ed file was valid, and did not check a subrequest at all if
the user didn't use FancyIndexing.
If it won't let us run in APR_POOLS_DEBUG mode, it's broken.
We should be implementing this all in terms of apr_threads, and fix
the apr_pools code to allow 'trusted subpools' with their own root
allocations that bypass the mutexes. Unrooting a pool just glosses
over the real problems.
Make this legible. Points out a huge headache in the new conftree pools
mechanism, that we aren't joined properly, so we hit the 'not ancestor'
abend here.
Ryan Bloom [Thu, 2 Aug 2001 05:27:06 +0000 (05:27 +0000)]
Add a handler to mod_includes.c. This handler is designed to
implement the XbitHack directive. This can't be done with a
fixup, because we need to check the content-type, which is
only available in the handler phase.
PR: 7751
Ryan Bloom [Thu, 2 Aug 2001 04:59:51 +0000 (04:59 +0000)]
Make the includes filter check return codes from filters lower in
the filter chain. If a lower level filter returns an error, then
the request needs to stop immediately. This allows mod_include to
stop parsing data once a lower filter recognizes an error.
PR: 8102
Ryan Bloom [Thu, 2 Aug 2001 04:25:20 +0000 (04:25 +0000)]
Add the ability to extend the methods that Apache understands
and have those methods <limit>able in the httpd.conf. It uses
the same bit mask/shifted offset as the original HTTP methods
such as M_GET or M_POST, but expands the total bits from an int to
an ap_int64_t to handle more bits for new request methods than
an int provides.
Submitted by: Cody Sherr <csherr@covalent.net>
Solve the merge bugs, by storing a copy bit to save us a ton of
reallocation in the merge config phase. Should keep most of the
savings realized by moving to tables.
Need others to vet this code, please! Look at this and the prior
patch as a single diff (-r n -r n-2) to see the overall changes.
Replace check_symlinks in the ap_sub_req_lookup_* calls with
the new resolve_symlink (also used by the new directory_walk)
especially for performance and readability. Left check_symlinks
in the soon-to-be-gone get_path_info flavor of directory_walk.
Jeff Trawick [Tue, 31 Jul 2001 12:19:55 +0000 (12:19 +0000)]
get "make extraclean" working for apr-util again
the apr-util build now depends on files in apr;
"make extraclean" in apr removes some of those files, causing
a subsequent "make extraclean" in apr-util to blow*; make in
apr-util first so we don't have this problem
*on some platforms make aborted; on others the error was
ignored though apr-util wasn't cleaned
This patch conditionally builds against openssl 0.9.6b _if_ openssl is
unpacked and properly built (using pretty much the defaults) in the
srclib/openssl/ directory. Someday soon this needs to be more exhaustive,
but this should solve the 80% problem :)
enables the use of the ssl_var_lookup functionality in the various source
files in modules/ssl. The ap_hook_* functions are still not yet ported to
Apache 2.0 style
This patch eliminates the direct use of OS library calls (fopen and
other depreciated Apache 1.3 library utilities) from ssl_engine_pphrase.c
and ssl_util_ssl.c.
- eliminated the use of ssl_log - it used to cause seg faults during cleanup
since the conn_rec will no longer be valid.
- eliminated the "for (;;)" processing loop in ssl_io_filter_Output() -
we'll have to do that in churn_output() if required, so that any remaining
OpenSSL data (if available) is transferred before we call the
CloseConnection.
- Any remaining data in SSL should be cleaned up ideally in the
APR_BUCKET_IS_EOS() processing stage itself, as we close the SSL connection
here.
Submitted by: Madhusudan Mathihalli <madhusudan_mathihalli@hp.com>
Reviewed by: William Rowe
Bill Stoddard [Tue, 31 Jul 2001 00:34:27 +0000 (00:34 +0000)]
The read() in apr_recv() would always be called first and return EAGAIN.
This one change to eliminate the read unless there are really bytes to read
is good for a 7 to 9% performance boost on AIX.
Register for %X, %c (we gotta make a decision, please vote if you care...
use %c's meaning from the historical SSL modules, or Bill Stoddard's
connection-terminated meaning? One will have to give.)
httpd.exp and lots of other export files are generated based on the
AP[RU]_DECLARE macros. This commit gets mod_cgid working again as a DSO on
AIX.
However, this brings up the need to look for any functions that are
available as part of the API, and AP[RU]_DECLAREing them, so things don't
blow up in DSOs.