You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@httpd.apache.org by Rodent of Unusual Size <Ke...@Golux.Com> on 1999/05/17 19:51:01 UTC

[PATCH] Add protocol to things SetEnvIf can test

Something I wanted to do recently to conditionalise rewrites
revealed that the request protocol wasn't one of the fields
that SetEnvIf[NoCase] can test.  So here's a patch.

The usual keyword in CGI, SSI, and mod_rewrite for this
quantity is "SERVER_PROTOCOL", but that seemed counterintuitive
to me for this case.  Any opinions on whether it should be
SERVER_PROTOCOL or REQUEST_PROTOCOL?  I chose the latter
because it seems more appropriate to what's being tested.
-- 
#ken    P-)}

Ken Coar                    <http://Web.Golux.Com/coar/>
Apache Software Foundation  <http://www.apache.org/>
"Apache Server for Dummies" <http://Web.Golux.Com/coar/ASFD/>


Index: htdocs/manual/mod/mod_setenvif.html
===================================================================
RCS file: /home/cvs/apache-1.3/htdocs/manual/mod/mod_setenvif.html,v
retrieving revision 1.5
diff -u -r1.5 mod_setenvif.html
--- mod_setenvif.html	1998/05/28 14:06:54	1.5
+++ mod_setenvif.html	1999/05/17 17:43:12
@@ -260,7 +260,8 @@
   <A
    HREF="directive-dict.html#Compatibility"
    REL="Help"
-  ><STRONG>Compatibility:</STRONG></A> Apache 1.3 and above
+  ><STRONG>Compatibility:</STRONG></A> Apache 1.3 and above; the
+  Request_Protocol keyword is only available with 1.3.7 and later
   </P>
   <P>
   The <SAMP>SetEnvIf</SAMP> directive defines environment variables
@@ -284,6 +285,10 @@
    </LI>
    <LI><SAMP>Request_Method</SAMP> - the name of the method being used
     (<SAMP>GET</SAMP>, <SAMP>POST</SAMP>, <EM>et cetera</EM>)
+   </LI>
+   <LI><SAMP>Request_Protocol</SAMP> - the name and version of the protocol
+    with which the request was made (<EM>e.g.</EM>, "HTTP/0.9", "HTTP/1.1",
+    <EM>etc.</EM>)
    </LI>
    <LI><SAMP>Request_URI</SAMP> - the portion of the URL following the
     scheme and host portion
Index: src/CHANGES
===================================================================
RCS file: /home/cvs/apache-1.3/src/CHANGES,v
retrieving revision 1.1359
diff -u -r1.1359 CHANGES
--- CHANGES	1999/05/17 08:00:02	1.1359
+++ CHANGES	1999/05/17 17:43:27
@@ -1,5 +1,9 @@
 Changes with Apache 1.3.7
 
+  *) Add 'Request_Protocol' special keyword to mod_setenvif so that
+     environment variables can be set according to the protocol version
+     (e.g., HTTP/0.9 or HTTP/1.1) of the request.  [Ken Coar]
+
   *) Add DSO support for OpenStep (Mach 4.2) platform.
      [Ralf S. Engelschall, Rex Dieter <rd...@math.unl.edu>] PR#3997
 
Index: src/modules/standard/mod_setenvif.c
===================================================================
RCS file: /home/cvs/apache-1.3/src/modules/standard/mod_setenvif.c,v
retrieving revision 1.26
diff -u -r1.26 mod_setenvif.c
--- mod_setenvif.c	1999/01/01 19:05:13	1.26
+++ mod_setenvif.c	1999/05/17 17:43:42
@@ -125,7 +125,8 @@
     SPECIAL_REMOTE_HOST,
     SPECIAL_REMOTE_USER,
     SPECIAL_REQUEST_URI,
-    SPECIAL_REQUEST_METHOD
+    SPECIAL_REQUEST_METHOD,
+    SPECIAL_REQUEST_PROTOCOL
 };
 typedef struct {
     char *name;                 /* header name */
@@ -241,6 +242,9 @@
 	else if (!strcasecmp(fname, "request_method")) {
 	    new->special_type = SPECIAL_REQUEST_METHOD;
 	}
+	else if (!strcasecmp(fname, "request_protocol")) {
+	    new->special_type = SPECIAL_REQUEST_PROTOCOL;
+	}
 	else {
 	    new->special_type = SPECIAL_NOT;
 	}
@@ -354,6 +358,9 @@
 		break;
 	    case SPECIAL_REQUEST_METHOD:
 		val = r->method;
+		break;
+	    case SPECIAL_REQUEST_PROTOCOL:
+		val = r->protocol;
 		break;
 	    case SPECIAL_NOT:
 		val = ap_table_get(r->headers_in, b->name);