]> granicus.if.org Git - apache/commitdiff
ap_expr: Add req_novary function that allows HTTP header lookups
authorRainer Jung <rjung@apache.org>
Sun, 16 Dec 2012 14:46:45 +0000 (14:46 +0000)
committerRainer Jung <rjung@apache.org>
Sun, 16 Dec 2012 14:46:45 +0000 (14:46 +0000)
without adding the name to the Vary header.

Submitted by: sf
Backported by: rjung
Reviewed by: rjung, jailletc36, sf

Backport of r1403483 from trunk.

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.4.x@1422586 13f79535-47bb-0310-9956-ffa450edef68

CHANGES
STATUS
docs/manual/expr.xml
server/util_expr_eval.c

diff --git a/CHANGES b/CHANGES
index f53a23f4999443579d34b21a8ab260b4e9287d2e..afb3d325f1aea0a103c7f2345bb8bb460864af60 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -2,6 +2,9 @@
 
 Changes with Apache 2.4.4
 
+  *) ap_expr: Add req_novary function that allows HTTP header lookups
+     without adding the name to the Vary header. [Stefan Fritsch]
+
   *) mod_slotmem_*: Add in new fgrab() function which forces a grab and
      slot allocation on a specified slot. Allow for clearing of inuse
      array. [Jim Jagielski]
diff --git a/STATUS b/STATUS
index 6409105d80b4598636e7a512c9bfdeee88508422..1a1478df570d03dafd12cf7a9a03d627cced6cfb 100644 (file)
--- a/STATUS
+++ b/STATUS
@@ -91,17 +91,6 @@ RELEASE SHOWSTOPPERS:
 PATCHES ACCEPTED TO BACKPORT FROM TRUNK:
   [ start all new proposals below, under PATCHES PROPOSED. ]
 
-   * ap_expr: Add req_novary function that allows HTTP header lookups
-     without adding the name to the Vary header
-     Not critical for 2.4.4.
-     trunk patch: http://svn.apache.org/viewvc?view=revision&revision=1403483
-     2.4.x patch: Trunk patch works.
-     +1: rjung, jailletc36, sf
-     jailletc36: IMO, a line in CHANGES should be added to reflect the new functionality
-                 and maybe the doc should tell in which version of apache it has been
-                 introduced
-     rjung: Will include a CHANGES item and a compatibility note in expr.xml.
-
 
 PATCHES PROPOSED TO BACKPORT FROM TRUNK:
   [ New proposals should be added at the end of the list ]
index 6980419889ed483de77ef7293b986ee5e87fac83..41bf6462b9e3cdb76f227bdb367bde2f7f703d81 100644 (file)
@@ -142,7 +142,9 @@ listfunction ::= listfuncname "<strong>(</strong>" word "<strong>)</strong>"
     <code>req</code> <a href="#functions">function</a>. Using these
     variables may cause the header name to be added to the Vary
     header of the HTTP response, except where otherwise noted for the
-    directive accepting the expression.</p>
+    directive accepting the expression. The <code>req_novary</code>
+    <a href="#functions">function</a> may be used to circumvent this
+    behavior.</p>
 
     <table border="1" style="zebra">
     <columnspec><column width="1"/></columnspec>
@@ -434,6 +436,9 @@ listfunction ::= listfuncname "<strong>(</strong>" word "<strong>)</strong>"
     <tr><td><code>req</code>, <code>http</code></td>
         <td>Get HTTP request header; header names may be added to the Vary
             header, see below</td><td></td></tr>
+    <tr><td><code>req_novary</code></td>
+        <td>Same as <code>req</code>, but header names will not be added to the
+            Vary header</td><td></td></tr>
     <tr><td><code>resp</code></td>
         <td>Get HTTP response header</td><td></td></tr>
     <tr><td><code>reqenv</code></td>
@@ -468,7 +473,8 @@ listfunction ::= listfuncname "<strong>(</strong>" word "<strong>)</strong>"
     <p>When the functions <code>req</code> or <code>http</code> are used,
     the header name will automatically be added to the Vary header of the
     HTTP response, except where otherwise noted for the directive accepting
-    the expression.</p>
+    the expression. The <code>req_novary</code> function can be used to
+    prevent names from being added to the Vary header.</p>
 
     <p>In addition to string-valued functions, there are also list-valued functions which
     take one string as argument and return a wordlist, i.e. a list of strings. The wordlist
index 699593108c68a883c2b03cb1864eea4ee4871cb7..b350cfc7716d9e823aadff9bf04775f7abf564ba 100644 (file)
@@ -968,6 +968,8 @@ static const char *req_table_func(ap_expr_eval_ctx_t *ctx, const void *data,
         t = ctx->r->notes;
     else if (name[3] == 'e')        /* reqenv */
         t = ctx->r->subprocess_env;
+    else if (name[3] == '_')        /* req_novary */
+        t = ctx->r->headers_in;
     else {                          /* req, http */
         t = ctx->r->headers_in;
         add_vary(ctx, arg);
@@ -1566,6 +1568,7 @@ static const struct expr_provider_single string_func_providers[] = {
     { req_table_func,       "http",           NULL, 0 },
     { req_table_func,       "note",           NULL, 0 },
     { req_table_func,       "reqenv",         NULL, 0 },
+    { req_table_func,       "req_novary",     NULL, 0 },
     { tolower_func,         "tolower",        NULL, 0 },
     { toupper_func,         "toupper",        NULL, 0 },
     { escape_func,          "escape",         NULL, 0 },