1
0
mirror of https://github.com/apache/httpd.git synced 2026-01-26 19:01:35 +03:00
Commit Graph

725 Commits

Author SHA1 Message Date
Bill Stoddard
d5c24720dc Commit 1 of 2 to:
1. rename ap_rset_content_type to ap_set_content_type
2. reverse the arguments on the call to aligh with ap_set_content_length


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@94056 13f79535-47bb-0310-9956-ffa450edef68
2002-03-20 17:41:55 +00:00
Jeff Trawick
f3c3ebe7f5 ap_rset_content_type() should take const char * instead of char *
this is friendlier to callers and r->content_type is const char *
too so it isn't harmful

this fixes a fatal compile error with AIX+xlc


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@94051 13f79535-47bb-0310-9956-ffa450edef68
2002-03-20 12:03:49 +00:00
Bill Stoddard
470edb9dd8 First commit to introduce accessor function to set r->content_type..
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@94027 13f79535-47bb-0310-9956-ffa450edef68
2002-03-20 01:58:47 +00:00
Greg Stein
b9514876c3 The underlying change here was to add the new WebDAV/DeltaV methods
now that it has an RFC. At the same time, I revamped a good chunk of
the name <-> number mapping code in http_protocol.c

* add M_FOO constants for the new RFC 3253 (DeltaV) methods. label
  where each of the builtin methods comes from.

* moved METHOD_NUMBER_FIRST/LAST from http_protocol.h into
  http_protocol.c since they weren't used anywhere else and they
  weren't namespace-protected.

* create register_one_method() and use it to insert all builtin
  methods (at _init() time) and extended methods into the registry.

* add a lookup_builtin_method() to quickly map a method name to a
  builtin method number.

* rebuild ap_method_number_of() to use the new lookup function.

* revamp ap_method_name_of() to use the registry to locate the name
  for any method number. add a pool argument (no callers in the core
  code needed to be updated)

* revamp make_allow() to deal with the new method numbers and all
  extended methods.

* in mod_dav, use the new method numbers rather than registering the
  DeltaV methods.


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@94015 13f79535-47bb-0310-9956-ffa450edef68
2002-03-19 10:11:33 +00:00
Jeff Trawick
0bd9790c41 fix the type of a string argument to ap_log_error()
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@93973 13f79535-47bb-0310-9956-ffa450edef68
2002-03-16 20:29:38 +00:00
William A. Rowe Jr
65a37752ec Eliminate potential ap_server_root_relative segfaults, with the input
of Jeff Trawick's style changes to the first patches.  Doesn't include
  the fixes to ssl [more complex], and we won't trap errors that involve
  ap_serverroot, since we presume that was normalized on the way in.
  Therefore, testing ap_server_root_relative(DEFAULT_FOO) cases
  should never become necessary.


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@93965 13f79535-47bb-0310-9956-ffa450edef68
2002-03-16 18:26:58 +00:00
Roy T. Fielding
845cbfd508 Update our copyright for this year.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@93918 13f79535-47bb-0310-9956-ffa450edef68
2002-03-13 20:48:07 +00:00
Bill Stoddard
6752a95e45 Move the quick_handler comment to the new quick handler location. Do not
call quick handler on a dirent subrequest. This fixes a nasty problem in
mod_cache where it was serving up content on a dirent subrequest.


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@93915 13f79535-47bb-0310-9956-ffa450edef68
2002-03-13 19:41:56 +00:00
Justin Erenkrantz
3058b601ff As hinted on dev@httpd, change filter naming schemes to match our
expectations of their usage.

The reason that we should make this change now is that we have changed
the implied meaning of AP_FTYPE_HTTP_HEADER - some users of this should
be PROTOCOL while others should be CONTENT_SET.  In order to clarify it,
toss all of the bogus names and force the filter writers to make sure
they understand what they are doing.

CONTENT_SET is new (horrible name - change if you have better idea), but
it indicates that it should run between RESOURCE and PROTOCOL.
mod_deflate is the ideal CONTENT_SET filter.

The changed type names are:
CONTENT is now RESOURCE.
HTTP_HEADER is now PROTOCOL.  However, most filters that used HTTP_HEADER
may want CONTENT_SET.  (Only things like POP and HTTP belong as PROTOCOL.)

MMN bump since all filters need to be recompiled due to filter reordering.


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@93756 13f79535-47bb-0310-9956-ffa450edef68
2002-03-07 09:27:17 +00:00
Justin Erenkrantz
15584be90b Fix prototype and return value of http_create_request to match new hook
declaration.


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@93754 13f79535-47bb-0310-9956-ffa450edef68
2002-03-07 08:23:56 +00:00
Ryan Bloom
41a7e56b09 There is no reason to insert the protocol filters in the insert_filters
phase.  This moves us to inserting the filters in the create_request
phase.  This makes more sense, because now the protocol filters are attached
to the request as soon as possible.  Previously, some requests never
called the insert_filters phase, so they don't get the filters.  Think
redirects for reqeusts that never call insert_filters.


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@93750 13f79535-47bb-0310-9956-ffa450edef68
2002-03-07 05:02:53 +00:00
Ryan Bloom
17085db8d6 Remove a comment that no longer applies.
Submitted by:  Greg Stein


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@93725 13f79535-47bb-0310-9956-ffa450edef68
2002-03-06 14:43:45 +00:00
Ryan Bloom
da5dd9c2b2 Remove another hack from the server. The add_required_filters function
was required to make sure that the sub request had the correct filters
when we went send the error page.  With the new filter insertion logic,
this is no longer necessary.


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@93710 13f79535-47bb-0310-9956-ffa450edef68
2002-03-05 05:41:28 +00:00
William A. Rowe Jr
e86a858a20 Just formatting cleanup, nothing interesting here, move along :)
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@93700 13f79535-47bb-0310-9956-ffa450edef68
2002-03-04 19:11:05 +00:00
Ryan Bloom
c8965c1e94 Adding the same filters over and over again used to be okay, because
we would lose the extra filters.  Now, if a filter is added, it is run.
Unfortunately, this can cause an infinite loop, or it can cause request
headers to appear twice.  This commit removes two instances in the core
where we were inserting filters for a second and third time.  The bug
was that error responses were causing infinite loops.

This also removes the reset_filters function, which did the exact
same thing as add_required_filters.  The two functions were both called
in error conditions, which was part of what caused this bug.


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@93693 13f79535-47bb-0310-9956-ffa450edef68
2002-03-04 05:54:44 +00:00
Ryan Bloom
633f3112fe Classify some of the input filters as the correct types. Previous to
this patch, the type wasn't too important, because all filters were
put on the same list.  After this patch, the filter type is very important,
because there are three different types of filters, and they are all treated
differently, namely:

CONNECTION:	Filters of this type are valid for the lifetime of this
		connection.
PROTOCOL:	Filters of this type are valid for the lifetime of this
		request from the point of view of the client, this means
		that the request is valid from the time that the request
		is sent until the time that the response is received.
CONTENT:	Filters of this type are valid for the time that this
		content is used to satisfy a request.  For simple requests,
		this is identical to PROTOCOL, but internal redirects
		and sub-requests can change the content without ending
		the request.

It is important to realize that the three major types above are actually
broken down into smaller groups in the code, to ensure that the ordering
of filters is always correct.


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@93688 13f79535-47bb-0310-9956-ffa450edef68
2002-03-03 22:34:55 +00:00
Ryan Bloom
9ac46ee310 Fix the mod_dir/mod_negotiation bug, where redirects and sub requests
were not getting the correct filters.  This is done by creating a location
in the request rec that holds protocol level filters.  Protocol level
filters survive for one request, from the time the request is received
from the user to the time the response is sent.  r->output_filters now
stores the request level filters, which are only valid for the lifetime
of one request_rec.

This patch works, but it is not complete.  The second half of the problem
is that add_any_filter doesn't check where it puts the filters that it
adds, so it is possible for filters to be put on this wrong list, and
for filters to be lost completely during request processing.  That half
of the fix will be coming in the next day or so.

Submitted by:	Will Rowe, Justin Erenkrantz, Ryan Bloom


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@93682 13f79535-47bb-0310-9956-ffa450edef68
2002-03-03 02:15:52 +00:00
Justin Erenkrantz
04533b8d27 Don't set bytes_sent to be 0 when r->assbackwards since this screws up
logging.

The content length filter seems to track bytes_sent properly regardless
of HTTP version.  The HTTP header filter knows not to send C-L (or any
headers) to this client.

showstoppers--;

(Also fix typo of my last name in CHANGES...)


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@93588 13f79535-47bb-0310-9956-ffa450edef68
2002-02-27 03:55:31 +00:00
Justin Erenkrantz
1ed7a6d590 Oh, no. It's legal to have 0 bytes read. Just not -1. If *that* happens,
I want to see a core.  0 bytes reads are fine.  Grr.

(I'm so tempted to throw this assert out, but if we get -1 length
brigades back, we're gonna be screwed.)


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@93202 13f79535-47bb-0310-9956-ffa450edef68
2002-02-03 17:43:35 +00:00
Bill Stoddard
4168820850 This patch restores most of Ryan's patch (11/12/2001) to remove the
client_socket from the conn_rec.  Diffs from Ryan's patch include:

- rename the create_connection hook to install_transport_filters
- move the point of invocation of the hook till after the call to
  after ap_update_vhost_given_ip to enable the hook to use vhost
  config info in its decision making.


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@93087 13f79535-47bb-0310-9956-ffa450edef68
2002-01-29 19:02:04 +00:00
Brian Pane
15d2ad0f1a Replaced some more ap_add_output_filter() calls with
ap_add_output_filter_handle() for efficiency


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@93051 13f79535-47bb-0310-9956-ffa450edef68
2002-01-27 19:12:56 +00:00
Bill Stoddard
327e4989d5 Remove the create_connection hook and put the client_socket back into the
conn_rec. The create_connection_hook has a design flaw that prevents it
from making decisions based on vhost information.


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@93050 13f79535-47bb-0310-9956-ffa450edef68
2002-01-27 12:52:08 +00:00
Justin Erenkrantz
94d01b65aa Change ap_get_brigade prototype to remove *readbytes in favor of readbytes.
If you need the length, you should be using apr_brigade_length.  This is
much more consistent.  Of all the places that call ap_get_brigade, only
one (ap_http_filter) needs the length.  This makes it now possible to
pass constants down without assigning them to a temporary variable first.

Also:
- Change proxy_ftp to use EXHAUSTIVE mode (didn't catch its -1 before)
- Fix buglet in mod_ssl that would cause it to return too much data in
  some circumstances


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@93014 13f79535-47bb-0310-9956-ffa450edef68
2002-01-25 01:11:47 +00:00
Justin Erenkrantz
cf16de9220 When doing input filtering, get out the way of anything that we don't want
to be explicitly involved in.


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@92946 13f79535-47bb-0310-9956-ffa450edef68
2002-01-20 18:53:31 +00:00
Justin Erenkrantz
7d32242a14 Input filtering prototype change: Socket blocking type should be
separate from the input filter mode type.

We also no longer look at readbytes to determine the method of
filter operation.  This makes the use of filters more obvious and
allows a wider range of options for input filters modes.

To start with, the new input filter modes are:

AP_MODE_READBYTES (no more than *readbytes returned)
AP_MODE_GETLINE (old *readbytes == 0 case)
AP_MODE_EATCRLF (old AP_MODE_PEEK)
AP_MODE_SPECULATIVE (will be used in a future ap_getline rewrite)
AP_MODE_EXHAUSTIVE (old *readbytes == -1 case)
AP_MODE_INIT (special case for NNTP over SSL)

The block parameter is an apr_read_type_e: APR_BLOCK_READ, APR_NONBLOCK_READ

This also allows cleanup of mod_ssl's handling in the getline case.

Reviewed by:	Ryan Bloom (concept), Greg Stein (concept)


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@92928 13f79535-47bb-0310-9956-ffa450edef68
2002-01-19 07:45:18 +00:00
Ian Holsman
6dcd25894c quick handler now runs on subrequests as well
PR:
Obtained from:
Submitted by:
Reviewed by:


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@92862 13f79535-47bb-0310-9956-ffa450edef68
2002-01-16 04:29:10 +00:00
Bill Stoddard
e4494ea98a Log a more descriptive error message.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@92851 13f79535-47bb-0310-9956-ffa450edef68
2002-01-14 14:44:25 +00:00
Ken Coar
0d1a46028e Bring forward the FileETag directive enhancement from 1.3.23-dev.
(Passes all 61 of the apache/etags.t test.)  Bump MMN due to
	change to core_dir_config structure (new fields at end).


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@92830 13f79535-47bb-0310-9956-ffa450edef68
2002-01-11 18:55:27 +00:00
William A. Rowe Jr
30d1548be6 Fix a handful of AP_MODULE_DECLARE_DATA exports for .so modules.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@92805 13f79535-47bb-0310-9956-ffa450edef68
2002-01-10 09:11:33 +00:00
William A. Rowe Jr
aff1454d34 *) Split all Win32 modules [excluding the core components mod_core,
mod_so, mod_win32 and the winnt mpm] into individual loadable
     modules, so the administrator may individually disable the former
     compiled-in modules by simply commenting out their LoadModule
     directives.  [William Rowe]

  *) Saved Win32 module authors and porters many future headaches, by
     duplicating the appropriate .h files such as os.h into the include
     directory, including in the build tree.  [William Rowe]

  Also noticed that version stamp resources weren't generated for proxy
  modules, this too is now fixed.


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@92804 13f79535-47bb-0310-9956-ffa450edef68
2002-01-10 08:47:23 +00:00
Greg Stein
e312a3c306 Fix how mod_dav examines methods in the request -- use the method number
from the request. To do this, we also need to register all of the new/custom
methods that mod_dav recognizes.

Note: this fixes a bug where a method (e.g. REPORT) would appear in a
Limit(Except) directive and Apache would register the method. The method
number in the request would then be something *other* than M_INVALID, which
threw off mod_dav's tests.

Submitted by: Sander Striker <striker@apache.org>


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@92764 13f79535-47bb-0310-9956-ffa450edef68
2002-01-07 22:36:15 +00:00
Bill Stoddard
59550522ce Fix seg fault in HTTP_IN when trying to handle the LimitRequestBody
directive when reading a proxy response. We should bypass LimitRequestBody
activities when handling a response from the proxied server.

I don't think this will circumvent requestbody checking on a large request
coming into the server that is destined to be proxied. (not tested though).


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@92722 13f79535-47bb-0310-9956-ffa450edef68
2002-01-03 19:20:54 +00:00
Justin Erenkrantz
8c16aeeeb8 Fix LimitRequestBody directive by moving the relevant code from
ap_*_client_block to ap_http_filter (aka HTTP_IN).  This is the
only appropriate place for limit checking to occur (otherwise,
chunked input is not correctly limited).

Also changed the type of limit_req_body to apr_off_t to match the
other types inside of HTTP_IN.  Also made the strtol call for
limit_req_body a bit more robust.


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@92700 13f79535-47bb-0310-9956-ffa450edef68
2002-01-02 07:56:25 +00:00
Jeff Trawick
187e9ae3b9 Change core code to allow an MPM to set hard thread/server
limits at startup.


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@92512 13f79535-47bb-0310-9956-ffa450edef68
2001-12-18 13:48:54 +00:00
Bill Stoddard
6c942d45f4 Detabify the chunk filter. No function change.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@92487 13f79535-47bb-0310-9956-ffa450edef68
2001-12-14 21:30:16 +00:00
William A. Rowe Jr
33eaba0f1e A style change for ken :)
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@92470 13f79535-47bb-0310-9956-ffa450edef68
2001-12-14 03:29:13 +00:00
Brian Pane
3e75e8b52e [indentation fixes only]
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@92389 13f79535-47bb-0310-9956-ffa450edef68
2001-12-08 02:04:51 +00:00
Brian Pane
dc85b1450c Reduced the number of times that we scan through each string
looking for invalid characters in analyze_ct()


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@92388 13f79535-47bb-0310-9956-ffa450edef68
2001-12-08 02:00:42 +00:00
Jeff Trawick
226d166f3e fix a const-ness problem caused by calling the wrong strchr()
--enable-maintainer-mode and a decent compiler is *so* important!


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@92365 13f79535-47bb-0310-9956-ffa450edef68
2001-12-07 12:29:04 +00:00
Brian Pane
47a51848bc Removed one more strdup in the content-type processing
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@92364 13f79535-47bb-0310-9956-ffa450edef68
2001-12-07 08:48:17 +00:00
Brian Pane
ad405f14c2 Optimized away some string scans and copies in analyze_ct()
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@92363 13f79535-47bb-0310-9956-ffa450edef68
2001-12-07 08:19:44 +00:00
Brian Pane
a262e40728 optimization: replaced an apr_pstrndup call with apr_pstrmemdup
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@92359 13f79535-47bb-0310-9956-ffa450edef68
2001-12-07 03:44:29 +00:00
Brian Pane
c98d16f329 Small performance fix: delay variable initialization in
ap_meets_conditions() until after the point where we
short-circuit out of the function on subrequests


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@92354 13f79535-47bb-0310-9956-ffa450edef68
2001-12-06 02:57:19 +00:00
William A. Rowe Jr
cc843273b8 Ensure we include path_info in ap_internal_fast_redirect() for multiview
mapping.  This isn't the end of these bugs, only one puzzle piece.


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@92259 13f79535-47bb-0310-9956-ffa450edef68
2001-11-30 05:29:40 +00:00
Brian Pane
2f38fa60c8 optimized away the sprintf calls in ap_make_etag()
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@92161 13f79535-47bb-0310-9956-ffa450edef68
2001-11-24 07:38:52 +00:00
Ian Holsman
86b792b21c Modify post_config hook so that it can return a error,
causing the server not to start.
previous method was to call exit(1) which would not fail
gracefully

PR:
Obtained from:
Submitted by:
Reviewed by:	(Idea only Jeff Trawick)


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@92144 13f79535-47bb-0310-9956-ffa450edef68
2001-11-23 16:35:22 +00:00
Brian Pane
db91d6cf85 added inlined string concatenation to form_header_field() for speed
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@92137 13f79535-47bb-0310-9956-ffa450edef68
2001-11-22 21:04:28 +00:00
Ryan Bloom
d70af2b3eb Fix the timeout logic that I broke last week. This adds a request
level filter that sets the timeout on the socket that is connected
to the client.

Thanks Greg Stein for seeing this bug.


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@92073 13f79535-47bb-0310-9956-ffa450edef68
2001-11-21 03:46:22 +00:00
Cliff Woolley
0caf1ce9db Fix a bug which would cause the response headers to be omitted
when sending a negotiated ErrorDocument because the required
filters were attached to the wrong request_rec.

Submitted by:	John Sterling <sterling@covalent.net>
Reviewed by:	Justin Erenkrantz, Cliff Woolley


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@91900 13f79535-47bb-0310-9956-ffa450edef68
2001-11-13 07:37:13 +00:00
Justin Erenkrantz
24a8625ef6 This section of tabs in the middle of space-only bugs me.
Reformat this section.


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@91897 13f79535-47bb-0310-9956-ffa450edef68
2001-11-13 06:12:41 +00:00