]> git.ipfire.org Git - thirdparty/apache/httpd.git/commitdiff
PR63971 expose apr_table_unset for headers/envvars
authorEric Covener <covener@apache.org>
Sat, 30 Nov 2019 20:28:36 +0000 (20:28 +0000)
committerEric Covener <covener@apache.org>
Sat, 30 Nov 2019 20:28:36 +0000 (20:28 +0000)
via nil assignment

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1870650 13f79535-47bb-0310-9956-ffa450edef68

CHANGES
modules/lua/lua_apr.c

diff --git a/CHANGES b/CHANGES
index e99096813cc975f02fbafc39c7a5d9ed167651ba..f73f111dbf3a5d06b7be42ea1d0f904c57457806 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,6 +1,10 @@
                                                          -*- coding: utf-8 -*-
 Changes with Apache 2.5.1
 
+  *) mod_lua: Accept nil assignments to the exposed tables (r.subprocess_env, 
+     r.headers_out, etc) to remove the key from the table. PR63971. 
+     [Eric Covener]
+
   *) mod_http2: Fixed interaction with mod_reqtimeout. A loaded mod_http2 was disabling the
      ssl handshake timeouts. Also, fixed a mistake of the last version that made `H2Direct` 
      always `on`, irregardless of configuration. Found and reported by
index 8e34cf30828b595147200dca0c3538ac6d805c55..9590fd6e18aa1e1155d63b60b94700ef1d80f85b 100644 (file)
@@ -39,7 +39,13 @@ static int lua_table_set(lua_State *L)
 {
     req_table_t    *t = ap_lua_check_apr_table(L, 1);
     const char     *key = luaL_checkstring(L, 2);
-    const char     *val = luaL_checkstring(L, 3);
+    const char     *val = luaL_optlstring(L, 3, NULL, NULL);
+
+    if (!val) { 
+        apr_table_unset(t->t, key);
+        return 0;
+    }
+
     /* Unless it's the 'notes' table, check for newline chars */
     /* t->r will be NULL in case of the connection notes, but since 
        we aren't going to check anything called 'notes', we can safely