martin 98/07/21 08:39:44
Modified: . STATUS
src CHANGES
src/modules/proxy mod_proxy.c
Log:
Added Max-Forwards: trace support to the proxy
Revision Changes Path
1.446 +3 -1 apache-1.3/STATUS
Index: STATUS
===================================================================
RCS file: /home/cvs/apache-1.3/STATUS,v
retrieving revision 1.445
retrieving revision 1.446
diff -u -u -r1.445 -r1.446
--- STATUS 1998/07/20 23:38:34 1.445
+++ STATUS 1998/07/21 15:39:39 1.446
@@ -269,6 +269,8 @@
In progress:
+ * Martin's busy adding Via: support to the proby
+
* Ben's ASP work... All agree it sounds cool.
* DDA's adding a tray application to the Windoze version for ease of
@@ -433,7 +435,7 @@
2) Expect
3) byte range error handling
4) update the Accept-Encoding parser to allow q-values
- 5) would be nice if the proxy used Via and Max-Forwards, even as
+ 5) would be nice if the proxy used Via, even as
HTTP/1.0
* #ifdef __EMX__ --> #ifdef OS2.
1.975 +4 -0 apache-1.3/src/CHANGES
Index: CHANGES
===================================================================
RCS file: /home/cvs/apache-1.3/src/CHANGES,v
retrieving revision 1.974
retrieving revision 1.975
diff -u -u -r1.974 -r1.975
--- CHANGES 1998/07/21 10:20:24 1.974
+++ CHANGES 1998/07/21 15:39:40 1.975
@@ -1,5 +1,9 @@
Changes with Apache 1.3.2
+ *) Add support for the Max-Forwards: header line required by RFC2068 for
+ the TRACE method. This allows apache to TRACE along a chain of proxies
+ up to a predetermined depth. [Martin Kraemer]
+
*) Fix SHARED_CORE rule: The CFLAGS_SHLIB variable is no longer doubled
(compilers complained) and the .so.V.R.P filename extension was adjusted
to correctly reflect the 1.3.2 version.
1.56 +17 -0 apache-1.3/src/modules/proxy/mod_proxy.c
Index: mod_proxy.c
===================================================================
RCS file: /home/cvs/apache-1.3/src/modules/proxy/mod_proxy.c,v
retrieving revision 1.55
retrieving revision 1.56
diff -u -u -r1.55 -r1.56
--- mod_proxy.c 1998/07/09 19:45:55 1.55
+++ mod_proxy.c 1998/07/21 15:39:42 1.56
@@ -290,9 +290,26 @@
int i, rc;
struct cache_req *cr;
int direct_connect = 0;
+ const char *maxfwd_str;
if (!r->proxyreq || strncmp(r->filename, "proxy:", 6) != 0)
return DECLINED;
+
+ if (r->method_number == M_TRACE &&
+ (maxfwd_str = ap_table_get(r->headers_in, "Max-Forwards")) != NULL) {
+ int maxfwd = strtol(maxfwd_str, NULL, 10);
+ if (maxfwd < 1) {
+ int access_status;
+ r->proxyreq = 0;
+ if ((access_status = ap_send_http_trace(r)))
+ ap_die(access_status, r);
+ else
+ ap_finalize_request_protocol(r);
+ return OK;
+ }
+ ap_table_setn(r->headers_in, "Max-Forwards",
+ ap_psprintf(r->pool, "%d", (maxfwd > 0) ? maxfwd-1 : 0));
+ }
if ((rc = ap_setup_client_block(r, REQUEST_CHUNKED_ERROR)))
return rc;