rse 97/07/31 01:19:53
Modified: src Tag: APACHE_1_2_X CHANGES http_protocol.c
http_request.c mod_browser.c
Log:
"force-response-1.0" now only applies to requests which are HTTP/1.0 to begin
with. "nokeepalive" now works for HTTP/1.1 clients. Added "downgrade-1.0"
which causes Apache to pretend it received a 1.0. Additionally mod_browser
now triggers during translate_name to workaround a deficiency in the
header_parse phase.
PR: 875
Submitted by: Dean Gaudet
Reviewed by: Roy Fielding, Ralf S. Engelschall, Jim Jagielski
Revision Changes Path
No revision
No revision
1.286.2.34 +7 -0 apache/src/CHANGES
Index: CHANGES
===================================================================
RCS file: /export/home/cvs/apache/src/CHANGES,v
retrieving revision 1.286.2.33
retrieving revision 1.286.2.34
diff -u -r1.286.2.33 -r1.286.2.34
--- CHANGES 1997/07/30 15:25:27 1.286.2.33
+++ CHANGES 1997/07/31 08:19:47 1.286.2.34
@@ -1,5 +1,12 @@
Changes with Apache 1.2.2
+ *) "force-response-1.0" now only applies to requests which are HTTP/1.0 to
+ begin with. "nokeepalive" now works for HTTP/1.1 clients. Added
+ "downgrade-1.0" which causes Apache to pretend it received a 1.0.
+ Additionally mod_browser now triggers during translate_name to
workaround
+ a deficiency in the header_parse phase.
+ [Dean Gaudet] PR#875
+
*) get_client_block() returns wrong length if policy is
REQUEST_CHUNKED_DECHUNK.
[Kenichi Hori <[EMAIL PROTECTED]>] PR#815
1.126.2.5 +9 -6 apache/src/http_protocol.c
Index: http_protocol.c
===================================================================
RCS file: /export/home/cvs/apache/src/http_protocol.c,v
retrieving revision 1.126.2.4
retrieving revision 1.126.2.5
diff -u -r1.126.2.4 -r1.126.2.5
--- http_protocol.c 1997/07/30 15:25:29 1.126.2.4
+++ http_protocol.c 1997/07/31 08:19:48 1.126.2.5
@@ -281,8 +281,9 @@
* and the response status does not require a close;
* and the response generator has not already indicated close;
* and the client did not request non-persistence (Connection: close);
+ * and we haven't been configured to ignore the buggy twit
+ * or they're a buggy twit coming through a HTTP/1.1 proxy
* and the client is requesting an HTTP/1.0-style keep-alive
- * and we haven't been configured to ignore the buggy twit,
* or the client claims to be HTTP/1.1 compliant (perhaps a proxy);
* THEN we can be persistent, which requires more headers be output.
*
@@ -304,9 +305,10 @@
!status_drops_connection(r->status) &&
!wimpy &&
!find_token(r->pool, conn, "close") &&
- (((ka_sent = find_token(r->pool, conn, "keep-alive")) &&
- !table_get(r->subprocess_env, "nokeepalive")) ||
- (r->proto_num >= 1001))
+ (!table_get(r->subprocess_env, "nokeepalive") ||
+ table_get(r->headers_in, "Via")) &&
+ ((ka_sent = find_token(r->pool, conn, "keep-alive")) ||
+ (r->proto_num >= 1001))
) {
char header[256];
int left = r->server->keep_alive_max - r->connection->keepalives;
@@ -1041,8 +1043,9 @@
if (!r->status_line)
r->status_line = status_lines[index_of_response(r->status)];
-
- if (table_get(r->subprocess_env,"force-response-1.0"))
+
+ if (r->proto_num == 1000
+ && table_get(r->subprocess_env,"force-response-1.0"))
protocol = "HTTP/1.0";
else
protocol = SERVER_PROTOCOL;
1.50.2.5 +4 -0 apache/src/http_request.c
Index: http_request.c
===================================================================
RCS file: /export/home/cvs/apache/src/http_request.c,v
retrieving revision 1.50.2.4
retrieving revision 1.50.2.5
diff -u -r1.50.2.4 -r1.50.2.5
--- http_request.c 1997/07/19 20:17:41 1.50.2.4
+++ http_request.c 1997/07/31 08:19:49 1.50.2.5
@@ -937,6 +937,10 @@
return;
}
+ if (r->proto_num > 1000 && table_get (r->subprocess_env,
"downgrade-1.0")) {
+ r->proto_num = 1000;
+ }
+
/* NB: directory_walk() clears the per_dir_config, so we don't inherit
from
location_walk() above */
1.9.2.1 +4 -4 apache/src/mod_browser.c
Index: mod_browser.c
===================================================================
RCS file: /export/home/cvs/apache/src/mod_browser.c,v
retrieving revision 1.9
retrieving revision 1.9.2.1
diff -u -r1.9 -r1.9.2.1
--- mod_browser.c 1997/04/24 23:35:21 1.9
+++ mod_browser.c 1997/07/31 08:19:50 1.9.2.1
@@ -139,7 +139,7 @@
{ NULL },
};
-int parse_headers_browser_module(request_rec *r)
+static int browser_match(request_rec *r)
{
server_rec *s = r->server;
browser_server_config_rec *sconf = get_module_config (s->module_config,
@@ -166,7 +166,7 @@
}
}
- return OK;
+ return DECLINED;
}
module browser_module = {
@@ -178,12 +178,12 @@
merge_browser_config, /* merge server configs */
browser_module_cmds, /* command table */
NULL, /* handlers */
- NULL, /* filename translation */
+ browser_match, /* filename translation */
NULL, /* check_user_id */
NULL, /* check auth */
NULL, /* check access */
NULL, /* type_checker */
NULL, /* fixups */
NULL, /* logger */
- parse_headers_browser_module /* header parser */
+ NULL /* header parser */
};