1
0
mirror of https://github.com/apache/httpd.git synced 2026-10-23 22:49:01 +03:00
Commit Graph

254 Commits

Author SHA1 Message Date
Eric Covener
9a29cd5f65 SECURITY: CVE-2007-1862 (cve.mitre.org)
mod_mem_cache: Copy headers into longer lived storage; header names and
values could previously point to cleaned up storage

PR: 41551
Submitted by: Davi Arnaut <davi haxent.com.br>
Reviewed by: covener



git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@543515 13f79535-47bb-0310-9956-ffa450edef68
2007-06-01 15:50:12 +00:00
Justin Erenkrantz
3019f9a87b mod_cache: Do not set Date or Expires when they are missing from the original
response or are invalid.


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@539621 13f79535-47bb-0310-9956-ffa450edef68
2007-05-18 22:42:59 +00:00
Justin Erenkrantz
cd208845d6 mod_cache: Correctly handle HEAD requests on expired cache content. PR 41230.
* modules/cache/mod_cache.c
  (cache_save_filter): Properly handle HEAD responses when we have a stale handle.

(This patch was revised by Justin/Ruediger.)

Submitted by: Niklas Edmundsson
Reviewed by: Justin, Ruediger


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@539620 13f79535-47bb-0310-9956-ffa450edef68
2007-05-18 22:38:08 +00:00
Justin Erenkrantz
1b7508dd21 mod_cache: Let Cache-Control max-age set the expiration of the cached
representation if Expires is not set.

* modules/cache/mod_cache.c
  (cache_save_filter): If Cache-Control max-age is set and Expires isn't,
  let that value control our expiration.


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@539063 13f79535-47bb-0310-9956-ffa450edef68
2007-05-17 18:25:13 +00:00
Justin Erenkrantz
c795f75fea mod_disk_cache: If the Vary'd content is stale, we can handle it via our
freshness tests which will attempt to revalidate the content.

* modules/cache/mod_disk_cache.c
  (open_entity): If the root Vary index is stale, we don't need to throw away
  potentially stale content - we can try to refresh it.


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@539054 13f79535-47bb-0310-9956-ffa450edef68
2007-05-17 18:17:23 +00:00
Justin Erenkrantz
9b5dff0669 mod_disk_cache: When renegotiating an already cached Vary'd response, do not
let us later throw away the renegotiated content due to a name mismatch.

We do not need to update the ->name field just before writing the headers as
the computed ->name on open and create is sufficient.  Updating ->name here is
essentially a no-op - except in the case of Vary where the key has internally
changed (to account for the Vary prefix), but the original name has not.
However, writing the Vary'd-accounted key means that when we read the cache
next that we will error out and disregard the just renegotiated response and
fetch the content all over again - oops!

(This is largely a case where I think we may have overthought ourselves; hence
the explanation is here in the commit rather than in the file itself.)

* modules/cache/mod_disk_cache.c
  (store_headers): The originally opened ->name is sufficient.
* CHANGES: Combined with r538992, note that renegotiation for Vary's seem to
  work far better.


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@538997 13f79535-47bb-0310-9956-ffa450edef68
2007-05-17 16:20:06 +00:00
Justin Erenkrantz
c1150a199a mod_disk_cache: When renegotiating an already cached Vary'd response, create
the refreshed .vary structure in the right directory.  Otherwise, we'll create
a new .vary layout underneath the already existing one - oops!

* modules/cache/mod_disk_cache.c
  (store_headers): Temporarily clear dobj->prefix if it is set to ensure that
  we create the .vary structure underneath the cache root.


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@538992 13f79535-47bb-0310-9956-ffa450edef68
2007-05-17 16:10:29 +00:00
Justin Erenkrantz
35713c177f RFC 2616 13.2.1 calls out max-age as being a valid 'explicit expiration time',
so per Sec. 13.9 permit queries with just max-age instead of only Expires.

* modules/cache/mod_cache.c
  (cache_save_filter): Be closer to RFC 2616's intent for query arguments.
* CHANGES: Update.


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@538807 13f79535-47bb-0310-9956-ffa450edef68
2007-05-17 05:43:18 +00:00
Ruediger Pluem
6ad514ccc1 * Prevent a segmentation fault if one of the Cache-Control headers
s-maxage, max-age, min-fresh, max-stale has no value assigned.
  In this case ignore s-maxage, max-age, min-fresh. For max-stale
  it is valid to set no value. In this case set max-stale to 1 year
  to signal that the client is accepting a stale response of any age.

Submitted by: Niklas Edmundsson <nikke acc.umu.se>
Reviewed by: rpluem


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@535617 13f79535-47bb-0310-9956-ffa450edef68
2007-05-06 14:35:02 +00:00
Guenter Knauf
47fff8d790 removed obsolete -prefix; minor cosmetic changes.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@521264 13f79535-47bb-0310-9956-ffa450edef68
2007-03-22 13:45:54 +00:00
Ruediger Pluem
477744b538 * 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.

PR: 41475


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@506621 13f79535-47bb-0310-9956-ffa450edef68
2007-02-12 20:29:04 +00:00
Ruediger Pluem
8a7fb4574c * 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.

PR: 41484
Submitted by: Fredrik Widlund <fredrik.widlund qbrick.com>
Reviewed by: rpluem


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@504183 13f79535-47bb-0310-9956-ffa450edef68
2007-02-06 15:55:50 +00:00
Graham Leggett
a9f530e317 This time from the top, with three part harmony AND feeling...
Revert the read-while-caching and large-file-crash fixes for mod_disk_cache,
ready to start again.

Reverted: r450105 r450188 r462571 r462601 r462696 r467655 r467684 r468044
r468373 r468409 r470455



git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@502365 13f79535-47bb-0310-9956-ffa450edef68
2007-02-01 21:28:34 +00:00
Bradley Nicholes
ba4156cadd Implement a BASEDIR build environment variable to allow the NetWare build to relocate the install files
Submitted by: Guenter Knauf <fuankg apache org>

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@502051 13f79535-47bb-0310-9956-ffa450edef68
2007-01-31 23:55:44 +00:00
William A. Rowe Jr
1fc3b01590 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.



git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@495126 13f79535-47bb-0310-9956-ffa450edef68
2007-01-11 05:37:20 +00:00
Paul Querna
832c80e502 Change the default depth and length of directories for mod_disk_cache to a depth of 2, and a length of 2.
Suggested By: noirin


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@491364 13f79535-47bb-0310-9956-ffa450edef68
2006-12-31 02:17:39 +00:00
Jeff Trawick
4a70a0e04d whitespace fix
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@483970 13f79535-47bb-0310-9956-ffa450edef68
2006-12-08 12:49:45 +00:00
Ruediger Pluem
7410019c69 * Remove expired content from cache that cannot be revalidated.
PR: 30370


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@481886 13f79535-47bb-0310-9956-ffa450edef68
2006-12-03 20:51:13 +00:00
Ruediger Pluem
e6a844c031 * Use the query string stored in r->parsed_uri.query instead of r->args
as r->args could have been changed (e.g. via mod_rewrite) after the quick
  handler hook. This causes resources to be stored under a key, where they
  cannot be fetched again in the quick handler.

PR: 40805


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@476625 13f79535-47bb-0310-9956-ffa450edef68
2006-11-18 22:17:33 +00:00
Martin Kraemer
d3d381486d Fix broken compile for platforms with sendfile() -- As Graham says: Looks like this code hasn't built in the SENDFILE case for a while.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@470455 13f79535-47bb-0310-9956-ffa450edef68
2006-11-02 18:05:20 +00:00
Ruediger Pluem
4647c3d043 * Increase the minimum and default value for MCacheMinObjectSize from 0 to 1,
as a MCacheMinObjectSize of 0 does not make sense and leads to a
  signal Floating point exception (8) (division by zero) in
  memcache_gdsf_algorithm.

PR: 40576
Submitted by: Xuekun Hu <xuekun.hu gmail.com>
Reviewed by: rpluem


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@469895 13f79535-47bb-0310-9956-ffa450edef68
2006-11-01 13:02:25 +00:00
Graham Leggett
b6534667de Restore the pdconf configuration structure in the SENDFILE case.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@468409 13f79535-47bb-0310-9956-ffa450edef68
2006-10-27 15:15:24 +00:00
Graham Leggett
66d027d551 mod_cache: Pass the output filter stack through the store_body()
hook, giving each cache backend the ability to make a better
decision as to how it will allocate the tasks of writing to the
cache and writing to the network. Previously the write to the
cache task needed to be complete before the same brigade was
written to the network, and this caused timing and memory issues
on large cached files. This fix replaces the previous fix for
PR39380.


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@468373 13f79535-47bb-0310-9956-ffa450edef68
2006-10-27 13:28:56 +00:00
Graham Leggett
78e8ee0cf7 Revert the splitting of buckets before they are handed to the cache providers,
a better way has been found to do this.


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@468044 13f79535-47bb-0310-9956-ffa450edef68
2006-10-26 15:43:25 +00:00
Graham Leggett
cdff9049e5 Optimise the alternate case. Fail fast and stop splitting buckets if
store_body is no longer being called.


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@467684 13f79535-47bb-0310-9956-ffa450edef68
2006-10-25 15:45:22 +00:00
Graham Leggett
48a692a9cd mod_cache: Fix an out of memory condition that occurs when the
cache tries to save huge files (greater than RAM). Buckets bigger
than a tuneable threshold are split into smaller buckets before
being passed to mod_disk_cache, etc. PR 39380


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@467655 13f79535-47bb-0310-9956-ffa450edef68
2006-10-25 13:44:47 +00:00
Graham Leggett
f53558c769 mod_disk_cache: Implement read-while-caching.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@462696 13f79535-47bb-0310-9956-ffa450edef68
2006-10-11 04:31:18 +00:00
Graham Leggett
2d326ca407 mod_disk_cache: NULL fd pointers when closing them, fix missing
close/flush, remove some unneccessary code duplication instead
of calling the right helper in replace_brigade_with_cache().


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@462601 13f79535-47bb-0310-9956-ffa450edef68
2006-10-10 22:10:01 +00:00
Graham Leggett
a0207d2ff9 mod_disk_cache: Do away with the write-to-file-then-move-in-place
mentality.


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@462571 13f79535-47bb-0310-9956-ffa450edef68
2006-10-10 21:17:47 +00:00
Graham Leggett
bc84099c0a mod_cache: Eliminate a bogus error in the log when a filter returns
AP_FILTER_ERROR.


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@450453 13f79535-47bb-0310-9956-ffa450edef68
2006-09-27 14:21:26 +00:00
Graham Leggett
4ac2f4bff6 Allocate the temporary copy file buffer from a pool.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@450188 13f79535-47bb-0310-9956-ffa450edef68
2006-09-26 20:35:42 +00:00
Graham Leggett
4116db0d19 mod_disk_cache: Make caching of large files possible on 32bit machines
by determining whether the cached file should be copied on disk rather
than loaded into RAM. PR39380


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@450105 13f79535-47bb-0310-9956-ffa450edef68
2006-09-26 16:26:56 +00:00
Graham Leggett
69604bb42c mod_mem_cache: Convert mod_mem_cache to use APR memory pool functions
by creating a root pool for object persistence across requests. This
also eliminates the need for custom serialization code.


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@450089 13f79535-47bb-0310-9956-ffa450edef68
2006-09-26 15:37:02 +00:00
Graham Leggett
eed5062c08 Memory leak fix: Unconditionally free the buffer.
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@450070 13f79535-47bb-0310-9956-ffa450edef68
2006-09-26 14:56:01 +00:00
Graham Leggett
d010f24449 mod_cache: From RFC3986 (section 6.2.3.) if a URI contains an
authority component and an empty path, the empty path is to be equivalent
to "/". It explicitly cites the following four URIs as equivalents:
  http://example.com
  http://example.com/
  http://example.com:/
  http://example.com:80/


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@450063 13f79535-47bb-0310-9956-ffa450edef68
2006-09-26 14:36:43 +00:00
Graham Leggett
9f5dee0d2c Don't cache requests with a expires date in the past; otherwise mod_cache will
always try to cache the URL. This bug might lead to numerous rename() errors
on win32 if the URL was previously cached.


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@450055 13f79535-47bb-0310-9956-ffa450edef68
2006-09-26 14:12:36 +00:00
Graham Leggett
cbf599cfd7 mod_disk_cache: Make sure that only positive integers are accepted
for the CacheMaxFileSize and CacheMinFileSize parameters in the
config file. PR39380 [Niklas Edmundsson <nikke acc.umu.se>]


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@450042 13f79535-47bb-0310-9956-ffa450edef68
2006-09-26 13:29:09 +00:00
Garrett Rooney
4691f3b9e3 * modules/cache/mod_cache.h: Fix comment that was obviously cut and
pasted from mod_proxy...


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@448229 13f79535-47bb-0310-9956-ffa450edef68
2006-09-20 15:06:52 +00:00
Garrett Rooney
687acd285a * modules/cache/mod_cache.h
(CACHE_DECLARE, CACHE_DECLARE_NONSTD, CACHE_DECLARE_DATA): Remove
   duplicate defines.

Submitted by: Davi Arnaut <davi@haxent.com.br>


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@448226 13f79535-47bb-0310-9956-ffa450edef68
2006-09-20 15:04:38 +00:00
Ruediger Pluem
edfbb15c54 * Remove all filters that are before the cache_out filter. This ensures
that we kick off the filter stack with our cache_out filter being the
  first in the chain. This make sense because we want to restore things
  in the same manner as we saved them.
  There may be filters before our cache_out filter, because

  1. We call ap_set_content_type during cache_select. This causes
     Content-Type specific filters to be added.
  2. We call the insert_filter hook. This causes filters e.g. like
     the ones set with SetOutputFilter to be added.

PR: 40090


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@425787 13f79535-47bb-0310-9956-ffa450edef68
2006-07-26 17:33:38 +00:00
Roy T. Fielding
de659cbed0 update license header text
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@420983 13f79535-47bb-0310-9956-ffa450edef68
2006-07-11 20:33:53 +00:00
William A. Rowe Jr
6df9b82d20 Revert Revision 397647
While it solves the studio 2005 (we desire this), it breaks
the studio 6 packaging (we require this).  Discussion on list
of practical solutions.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@419644 13f79535-47bb-0310-9956-ffa450edef68
2006-07-06 18:36:23 +00:00
Joe Orton
c13f8dd6eb * server/core.c (default_handler): Use apr_brigade_insert_file() to
append the file to the brigade.

* server/protocol.c (ap_send_fd),
modules/proxy/mod_proxy_http.c (spool_reqbody_cl), 
modules/cache/mod_mem_cache.c (recall_body),
modules/cache/mod_disk_cache.c (recall_body),
modules/mappers/mod_negotiation.c (handle_map_file),
modules/generators/mod_asis.c (asis_handler),
modules/dav/fs/repos.c [DEBUG_GET_HANDLER] (dav_fs_deliver),
modules/arch/win32/mod_isapi.c (ServerSupportFunction): Likewise.


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@414238 13f79535-47bb-0310-9956-ffa450edef68
2006-06-14 13:16:29 +00:00
Ruediger Pluem
cab5846455 * If possible, check if the size of an object to cache is within the
configured boundaries before actually saving data.

Submitted by: Niklas Edmundsson <nikke acc.umu.se>
Reviewed by: rpluem


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@411469 13f79535-47bb-0310-9956-ffa450edef68
2006-06-03 20:52:58 +00:00
Ruediger Pluem
a8482b67cf * info->expire and info->date are in microseconds. So convert the difference
to seconds before comparing it to age which is in seconds.

PR: 39713
Submitted by: Owen Taylor <otaylor redhat.com>
Reviewed by: rpluem


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@411464 13f79535-47bb-0310-9956-ffa450edef68
2006-06-03 19:41:49 +00:00
Ruediger Pluem
6b175e597f * Keep the Content-Type for successfully revalidated
cached objects, by unsetting possible Content-Type headers in
  r->headers_out and r->err_headers_out as they may be different to what
  we have received from the cache.
  Actually they are not needed as r->content_type set by
  ap_set_content_type a few lines above will be used in the store_headers
  functions of the storage providers as a fallback and the HTTP_HEADER filter
  does overwrite the Content-Type header with r->content_type anyway.

PR: 39647


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@410370 13f79535-47bb-0310-9956-ffa450edef68
2006-05-30 20:48:09 +00:00
Ruediger Pluem
5450296c9a * Remove temporary files if renaming fails, otherwise they may accumulate.
Submitted by: Davi Arnaut <davi haxent.com.br>
Reviewed by: rpluem


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@409942 13f79535-47bb-0310-9956-ffa450edef68
2006-05-28 10:32:01 +00:00
Ruediger Pluem
db02633be5 * Cleanup the code by replacing some inline code to lower-case a string with
ap_str_tolower.

Proposed by: Joe Orton


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@408729 13f79535-47bb-0310-9956-ffa450edef68
2006-05-22 19:05:09 +00:00
Ruediger Pluem
6ce4498198 * Fix const compiler warning introduced by r407357.
Noticed by: Joe Orton


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@408154 13f79535-47bb-0310-9956-ffa450edef68
2006-05-21 10:29:09 +00:00
Ruediger Pluem
a3d86dbf15 * Handle the cases "no proxy request" and "reverse proxy request" in the same
manner, when setting scheme and port_str. This is needed because if a cached
  entry is looked up by mod_cache's quick handler r->proxyreq
  is still unset in the reverse proxy case as it only gets set in the
  translate name hook (either by ProxyPass or mod_rewrite) which is run
  after the quick handler hook. This is different to the forward proxy
  case where it gets set before the quick handler is run (in the
  post_read_request hook).
  If a cache entry is created by the CACHE_SAVE filter we always have
  r->proxyreq set correctly.
  Also set scheme to ap_http_scheme(r) instead of "http" to handle SSL
  correctly.

PR: 39593


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@407357 13f79535-47bb-0310-9956-ffa450edef68
2006-05-17 19:16:43 +00:00