You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tcl.apache.org by mx...@apache.org on 2021/11/03 15:11:32 UTC

[tcl-rivet] branch quattuor updated: * src/mod_rivet_ng/TclWebapache.c: removed unnecessary call to TclWeb_InitEnvVars when loading input headers

This is an automated email from the ASF dual-hosted git repository.

mxmanghi pushed a commit to branch quattuor
in repository https://gitbox.apache.org/repos/asf/tcl-rivet.git


The following commit(s) were added to refs/heads/quattuor by this push:
     new a78907d  * src/mod_rivet_ng/TclWebapache.c: removed unnecessary call to TclWeb_InitEnvVars when loading input headers
a78907d is described below

commit a78907dd83a8aef6af76571ac24c6be2f66869bd
Author: Massimo Manghi <ma...@gmail.com>
AuthorDate: Wed Nov 3 16:10:00 2021 +0100

    * src/mod_rivet_ng/TclWebapache.c: removed unnecessary call to TclWeb_InitEnvVars when loading input headers
---
 ChangeLog                       |  5 +++++
 src/mod_rivet_ng/TclWebapache.c | 28 +++++++++++++++-------------
 tests/env.test                  |  4 ++++
 tests/headers.test              |  5 ++++-
 4 files changed, 28 insertions(+), 14 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index d71c8ae..da934cc 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2021-11-03 Massimo Manghi <mx...@apache.org>
+	* src/mod_rivet_ng/TclWebapache.c: removed unnecessary call to TclWeb_InitEnvVars
+	when loading input headers
+	* tests/env.test: cleaning up http tokens resources
+
 2021-11-01 Massimo Manghi <mx...@apache.org>
 	* src/mod_rivet_ng/Tclwebapache.c: expanded comments to newly
 	introduced functions
diff --git a/src/mod_rivet_ng/TclWebapache.c b/src/mod_rivet_ng/TclWebapache.c
index febed9f..0db01d6 100644
--- a/src/mod_rivet_ng/TclWebapache.c
+++ b/src/mod_rivet_ng/TclWebapache.c
@@ -458,12 +458,14 @@ TclWeb_VarNumber(Tcl_Obj *result, int source, TclWebRequest *req)
     return TCL_OK;
 }
 
+/* Environment variables. Include variables handling */
+
 /* These 2 array must be aligned and a one-to-one correspondence preserved 
  * The enum include_vars_idx *must* be terminated by 'invalid_env_var'
  * Adding a new env variable requires 
  *    + the name of the variable be listed in include_env_vars
  *    + a new value in the enumerator include_vars_idx must be added in the 
- *      corresponding position of the variable names array
+ *      position corresponding of the variable names array
  *    + the switch construct in function TclWeb_SelectEnvIncludeVar must
  *      be expanded to handle the new case identified by the new enumerator value
  */
@@ -607,13 +609,9 @@ static void
 TclWeb_InitEnvVars (rivet_thread_private* private)
 {
     TclWebRequest *req = private->req;
-    apr_table_t   *table;  
-    int            idx;
 
     if (ENV_IS_LOADED(req->environment_set)) return;
 
-    table = req->req->subprocess_env;
-
     /* Retrieve cgi variables. */
     if (!ENV_CGI_VARS_LOADED(req->environment_set))
     {
@@ -624,17 +622,20 @@ TclWeb_InitEnvVars (rivet_thread_private* private)
         ap_add_common_vars(req->req);
     }
 
-    /* Loading into 'table' the include vars */
+    /* Loading into 'req->req->subprocess_env' the include vars */
 
-    /* actually this is not necessary. ENV_VARS is modified only here therefore
-     * if it's set this function has been called already
-     * and it should have returned at the beginning of the execution. I keep
-     * it for clarity and uniformity with the CGI variables and in case
-     * the incremental environment control is extended
+    /* actually this check is not necessary. ENV_VARS_M is set only here therefore
+     * if it's set this function has been called already and it should have returned
+     * at the beginning of ies execution. I keep it for clarity and uniformity with the
+     * CGI variables and in case the incremental environment handling is extended
      */
 
     if (!ENV_VARS_LOADED(req->environment_set))
     {
+        apr_table_t   *table;  
+        int            idx;
+
+        table = req->req->subprocess_env;
         for (idx = 0;idx < invalid_env_var;idx++)
         {
             apr_table_set(table,include_env_vars[idx],TclWeb_SelectEnvIncludeVar(private,idx));
@@ -732,7 +733,8 @@ TclWeb_GetHeaderVars(Tcl_Obj *headersvar,rivet_thread_private* private)
 
     req = private->req;
 
-    TclWeb_InitEnvVars(private);
+    // I actually don't see why we need to load the whole environment here
+    //TclWeb_InitEnvVars(private);
 
     Tcl_IncrRefCount(headersvar);
     /* Transfer client request headers to TCL request namespace. */
@@ -748,7 +750,7 @@ TclWeb_GetHeaderVars(Tcl_Obj *headersvar,rivet_thread_private* private)
         Tcl_IncrRefCount(key);
         Tcl_IncrRefCount(val);
 
-            /* See comment in TclWeb_GetEnvVars concerning Bug 48963*/
+            /* See comment in TclWeb_GetEnvVars concerning Bug #48963*/
 
         Tcl_ObjSetVar2(req->interp, headersvar, key, val, 0);
         Tcl_DecrRefCount(key);
diff --git a/tests/env.test b/tests/env.test
index 155836c..182df4f 100644
--- a/tests/env.test
+++ b/tests/env.test
@@ -8,12 +8,14 @@ set rvttestfilename env.rvt
 ::tcltest::test env-1.1 {Environment variable} {
     set page [ ::http::geturl "${urlbase}$rvttestfilename?load_env=true" ]
     regexp -line "^env\\(DOCUMENT_NAME\\) = $rvttestfilename\$" [::http::data $page] match
+    ::http::cleanup $page
     set match
 } "env(DOCUMENT_NAME) = $rvttestfilename"
 
 ::tcltest::test env-1.2 {Environment variable} {
     set page [ ::http::geturl "${urlbase}$rvttestfilename?load_env=false" ]
     regexp -line "^env\\(DOCUMENT_NAME\\) = $rvttestfilename\$" [::http::data $page] match
+    ::http::cleanup $page
     set match
 } "env(DOCUMENT_NAME) = $rvttestfilename"
 
@@ -23,6 +25,8 @@ set rvttestfilename env.rvt
     set page2 [ ::http::geturl "${urlbase}$rvttestfilename?protocol=1"]
     set match2 [string trim [::http::data $page2]]
     #puts "proto: $match1 $match2"
+    ::http::cleanup $page1
+    ::http::cleanup $page2
     expr [string match $match1 $match2]
 } "1"
 
diff --git a/tests/headers.test b/tests/headers.test
index 698ee2f..f10d369 100644
--- a/tests/headers.test
+++ b/tests/headers.test
@@ -1,4 +1,7 @@
-# $Id$
+# -- headers.test
+#
+# testing ::rivet::load_headers command
+#
 
 set testfilename1 headers.rvt
 

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@tcl.apache.org
For additional commands, e-mail: commits-help@tcl.apache.org