Ryan Bloom [Tue, 7 Aug 2001 17:57:44 +0000 (17:57 +0000)]
Greatly simplify the ap_http_filter logic, by using the
apr_brigade_partition function. This should also remove a warning from
the Windows build, because apr_off_t and apr_size_t aren't the same
size.
Ryan Bloom [Tue, 7 Aug 2001 16:56:32 +0000 (16:56 +0000)]
Update the README so that it reflects just what Apache is today, and so
that it is correct about where things reside.
Submitted by: Joshua Slive <joshua@slive.ca>
All mod_autoindex query parsing is now quietly quashed with the
IndexOption IgnoreClient. The IndexOption SuppressColumnSorting
still drops the column sort <a href>'s for the column headers, but
IgnoreClient is required to ignore these Query options entirely.
Introduced new mod_autoindex query argument parsing for F=[0|1|2]
to allow the client to select plain, FancyIndexing or HTMLTable
formatting, V=[0|1] to inhibit or enable version sorting, and
P=pattern to return only specific files. The old Query Arguments
were reorganized as C=f for sorting column 'f' (same N, D, S, or M
as before), and O=A|D for ordering ascending or descending.
Docs and an Example are provided in mod_autoindex.html
Cliff Woolley [Tue, 7 Aug 2001 08:02:42 +0000 (08:02 +0000)]
Fixed an error in ap_ssi_get_tag_and_value(). It was not placing the
null terminator in the right spot for the tag_val if the value contained
backslashes. This caused #if, #elif, and #else expressions with backslashes
to be incorrectly evaluated.
Introduced new mod_autoindex IndexOptions flags; SuppressIcon to
drop the icon column and SuppressRules to drop the <hr> elements.
These are necessary for HTML 3.2 final formatting rules.
Introduced HTMLTable to create rudimentary HTML table listings
(implies FancyIndexing). Necessary for alternate charsets, since
the columns are borked by multibyte characters.
Re-Introduced the mod_autoindex IndexOptions flag TrackModified
from Apache 1.3.15. This is needed for two reasons, first, given
multiple machines within a server farm, ETags and Last-Modified
stamps won't correspond from machine to machine, and second, many
Unixes don't capture changes to the date or time stamp of existing
files, since these don't modify the dirent itself.
[Originally for 1.3 by me]
Re-Introduced the mod_autoindex InextOptions flag FoldersFirst
and DirectoryWidth options from Apache 1.3.10.
[Originally for 1.3 by Ken Coar]
A debatable change, to return (an absolute) 404 if some of the extentions
of every matching file isn't decodable by mod_mime, instead of 500.
Adopted 404 as the result, per Roy Fielding.
Thanks goes to Manoj, while commenting on another issue, for triggering
this idea. If we find files matching (e.g. index.html.bak matches
index.html) but they are rejected because we don't understand them
(e.g. they are a directory, or .bak isn't a mod_mime recognized extension)
then Error 500 out of here, with a note for the system administrator
explaining that index.html matches some files, but their extensions
cannot be grokked. No more (unintentional, or situational) autoindex :)
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.