Add a PROXYREQ_RESPONSE value for request_rec->proxyreq because it is
possible that there can be different behavior at the protocol level if
request_rec isn't really a request but a response.
This stems from the fact that request bodies must be indicated by
Content-Length or Transfer-Encoding, but response bodies do not. The
recent change to ap_http_filter to return EOS if there isn't a body broke
proxy. Therefore, there must be some way for the proxy to indicate that
this is a response. Accordingly, ap_http_filter can allow the BODY_NONE
iff this is a response.
Since r->proxyreq is set to PROXYREQ_PROXY even for the original request
from the client, that value isn't sufficient. Hence, the introduction of
PROXYREQ_RESPONSE.
Cliff Woolley [Thu, 30 May 2002 05:57:33 +0000 (05:57 +0000)]
Imagine the horror. I go to try compiling PHP4, and it bombs out on
r->boundary. BUT WAIT, I say, we have a test in there for that:
#if !MODULE_MAGIC_AT_LEAST(20020506,0). The test doesn't seem to be
working. That's odd, I think. So I go look at the ap_mmn.h. Egad,
the tests are totally backwards. How on earth are we going to handle this?
Surely it's wrong in 1.3.x as well. So I go look. Nope, turns out it
got fixed TWO YEARS AGO in that repository. Sigh. Anyway, thanks Greg.
:)
Apply same patch to mod_cgid that was applied to mod_cgi so that it
bypasses the *_client_block calls in favor of using the input filters
and brigades directly.
Cliff Woolley [Thu, 30 May 2002 05:04:32 +0000 (05:04 +0000)]
Yet another reason the MMN needs to get bumped. If there are changes
that anyone's been holding off on because they would affect the MMN, might
as well get them in now so we minimize the number of releases with MMN
changes. I believe there are more renames pending in APR that should be
done sooner rather than later, for example.
Cliff Woolley [Thu, 30 May 2002 00:35:25 +0000 (00:35 +0000)]
Thanks Ryan for cleaning up after my laziness. :) Here are just a few
last little changes. ->datafile should be initialized... but doing so
brings up the fact that the check in run_rewritemap_programs() was
expecting ->datafile to have a string attached to it. For clarity,
let's just use argv[0] there. And since we've reinstated the use of
->checkfile, we no longer need that extra apr_stat() I hacked in,
so let's get rid of it.
Ryan Bloom [Thu, 30 May 2002 00:02:59 +0000 (00:02 +0000)]
Tokenize the arguments for rewrite programs during config parsing, and
just use that information later. I was having a problem with prg
directives with arguments failing the configuration. The problem was
a call to stat, which was being passed the program name and the arguments.
Obviously, the arguments were messing up the call to stat. This gets the
test suite working for me again.
Solve a bug identified by Sebastian that we would always reaquire the
lock immediately instead of stalling for the isapi module's thread
to complete its work. This requires the new changes to thread_mutex
that introduce a guarenteed APR_THREAD_MUTEX_UNNESTED flag.
Reported by: Sebastian Hantsch <Sebastian.Hantsch@t-online.de>
Add a note indicating what it would take to get MTIME field populated.
(I did this locally, but didn't figure it was worth committing, but it's
still worth noting.)
Allow mod_deflate to be more tolerant of multiple content-encodings.
- Tighten scope of a few affected variables (accepts, token).
- Look for gzip in r->headers_out (!) - if there, we've already compressed.
(Previously, we'd look at r->headers_in which was bogus - we're output.)
- Switch the Accept-Encoding check to be case-insensitive per RFC 2616.
- Remove commented-out code.
- If C-E wasn't present or it was just "identity," set C-E to "gzip",
otherwise, merge "gzip" onto the C-E list.
This patch was originally submitted by Ian and cleaned up and tested by
Justin.
Submitted by: Ian Holsman
Reviewed by: Justin Erenkrantz
Cliff Woolley [Wed, 29 May 2002 04:38:59 +0000 (04:38 +0000)]
Error out a bit more nicely if the RewriteMap prg: is not found. We
can't just apr_stat in the first init round because we haven't run
apr_tokenize_to_argv() yet, and it would be a relatively ugly hack to run
it twice just for that. Well, I suppose we could store the argv in the
rewritemap structure, but ... nah. With this, we shutdown (cleanly, as
opposed to the old exit(1) method) if we go to execute a rewritemap
and discover it doesn't exist, and log a nice descriptive message at the
end of the error_log.
Correctly return 413 when an invalid chunk size is given on input.
- If get_chunk_size() returns a negative number, that probably implies
an overflow. So, create a 413 error and pass it to the output filters.
- Modify ap_discard_request_body() to return OK quickly if we're a subreq
or our status code implies that we will be dropping the connection.
- Modify ap_die() so that if the new status implies that we will drop
the connection, that we correctly indicate that we can not keepalive
this connection. (Without this, the error is returned, but the connection
is not closed.)
Cliff can revoke this as a showstopper, but I think this'll get fixed as soon
as I (or someone else) figures out how to return HTTP errors from a filter.
Bradley Nicholes [Tue, 28 May 2002 19:32:30 +0000 (19:32 +0000)]
The lock should have already been released when the connection was closed.
If it was then releasing it again causes a "releasing an unheld lock" warning
on NetWare. To avoid the warning, first try to get the lock before releasing
it. The other alternative would be to just assume that the lock has been
released when the connection was closed so do nothing.
Yoshiki Hayashi [Tue, 28 May 2002 07:34:10 +0000 (07:34 +0000)]
Add nowrap attribute to the column showing description, status,
module identifier etc.
This change is mainly for the sake of Japanese translation. Because
Japanese words are not whitespace separated, web browser can wrap it
anywhere it wants. This change prevent "module identifier" etc from
being wrapped.
Jeff Trawick [Mon, 27 May 2002 11:46:01 +0000 (11:46 +0000)]
simplified apachectl...
. it now uses "httpd -k verb" support for start/restart/etc.
. it now can pass through any httpd option, so apachectl
can be used as a replacement for invoking httpd directly
(this practice ensures that any necessary environment
variables are set up)
Joshua Slive [Sun, 26 May 2002 23:10:15 +0000 (23:10 +0000)]
A little refactoring of the mod_setenvif docs. In particular, consolidate the
details in the SetEnvIf directive and let the others simply reference that one.
Brian Pane [Sun, 26 May 2002 22:10:55 +0000 (22:10 +0000)]
Fix for suexec invocation of CGIs under user dirs when using cgid
PR: 7810
Submitted by: Colm MacCarthaigh <colmmacc@redbrick.dcu.ie>
Reviewed by: Brian Pane
Brian Pane [Sun, 26 May 2002 08:27:10 +0000 (08:27 +0000)]
Fix for suexec execution of CGI scripts from mod_include
(including security patch to ensure that <!--#include file="name.cgi"-->
is run as the suexec user rather than the httpd user)
PR: 7791, 8291
Submitted by: Colm MacCarthaigh <colmmacc@redbrick.dcu.ie>
Reviewed by: Brian Pane
Cliff Woolley [Sun, 26 May 2002 05:45:07 +0000 (05:45 +0000)]
I *think* I tracked down all the issues that have come up on list in the
last week or so and remain unresolved or needing consensus. If I missed
something, PLEASE BE SURE TO ADD IT HERE.
Cliff Woolley [Sat, 25 May 2002 20:10:55 +0000 (20:10 +0000)]
Fix the rest of the apr_pool_userdata_setn() bogosity w.r.t. DSO modules.
It's totally unsafe to use apr_pool_userdata_setn() in the post_config
phase of a module, since on some platforms when the DSO gets reloaded
between phases, the data segment will be at a different address on the
second phase and the userdata_get() call will fail.
Small chance we have an unterminated or single null terminated list.
Simple workaround to protect our sizing functions from walking past
the end of allocation.