You are viewing a plain text version of this content. The canonical link for it is here.
Posted to rivet-dev@tcl.apache.org by mx...@apache.org on 2011/09/24 01:27:51 UTC
svn commit: r1175070 - in /tcl/rivet/tags/2.0.4: ./ ChangeLog
src/apache-1/TclWebapache.c src/apache-1/rivetCore.c src/apache-2/rivetCore.c
Author: mxmanghi
Date: Fri Sep 23 23:27:51 2011
New Revision: 1175070
URL: http://svn.apache.org/viewvc?rev=1175070&view=rev
Log:
* src/apache-1/rivetCore.c, src/apache-1/TclWebapache.c: merging differences for Apache1.3
Modified:
tcl/rivet/tags/2.0.4/ (props changed)
tcl/rivet/tags/2.0.4/ChangeLog
tcl/rivet/tags/2.0.4/src/apache-1/TclWebapache.c
tcl/rivet/tags/2.0.4/src/apache-1/rivetCore.c
tcl/rivet/tags/2.0.4/src/apache-2/rivetCore.c
Propchange: tcl/rivet/tags/2.0.4/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Sep 23 23:27:51 2011
@@ -1 +1,2 @@
+/tcl/rivet/branches/2.0:1173816-1174923
/tcl/rivet/trunk:939332-1024311
Modified: tcl/rivet/tags/2.0.4/ChangeLog
URL: http://svn.apache.org/viewvc/tcl/rivet/tags/2.0.4/ChangeLog?rev=1175070&r1=1175069&r2=1175070&view=diff
==============================================================================
--- tcl/rivet/tags/2.0.4/ChangeLog (original)
+++ tcl/rivet/tags/2.0.4/ChangeLog Fri Sep 23 23:27:51 2011
@@ -1,3 +1,14 @@
+2011-09-23 Massimo Manghi <mx...@apache.org>
+ * src/apache-1/rivetCore.c, src/apache-1/TclWebapache.c: merging differences for Apache1.3
+
+2011-09-23 Massimo Manghi <mx...@apache.org>
+ * src/apache-1/rivetCore.c: fixed declarations for various calls to ap_pstrcat.
+
+2011-09-23 Massimo Manghi <mx...@apache.org>
+ * debian/rules,debian/changelog: new lintian required targets, current Debian package version bumped up to 2.0.4-1
+ * src/apache-1/TclWebapache.c,src/apache-1/rivetCode.c: latest changes for 'makeurl', 'load_env' and 'load_headers'
+ ported to code for Apache 1.x
+
2011-09-21 Massimo Manghi <mx...@apache.org>
* rivet/packages/calendar/calendar.tcl: fixed wrong conversion of month expressed as numeric string
Modified: tcl/rivet/tags/2.0.4/src/apache-1/TclWebapache.c
URL: http://svn.apache.org/viewvc/tcl/rivet/tags/2.0.4/src/apache-1/TclWebapache.c?rev=1175070&r1=1175069&r2=1175070&view=diff
==============================================================================
--- tcl/rivet/tags/2.0.4/src/apache-1/TclWebapache.c (original)
+++ tcl/rivet/tags/2.0.4/src/apache-1/TclWebapache.c Fri Sep 23 23:27:51 2011
@@ -421,7 +421,17 @@ TclWeb_GetEnvVars(Tcl_Obj *envvar, TclWe
val = TclWeb_StringToUtfToObj(env[i].val, req);
Tcl_IncrRefCount(key);
Tcl_IncrRefCount(val);
- Tcl_ObjSetVar2(req->interp, envvar, key, val, TCL_NAMESPACE_ONLY);
+
+ /* Variable scope resolution changed to default (flags: 0)
+ * to enable creation of the array in the caller's local scope.
+ * Default behavior (creation in the ::request namespace)
+ * is now more consistently constrained by fully qualifying
+ * the default array names (see rivetCore.c). This should fix
+ * Bug 48963
+ */
+
+ Tcl_ObjSetVar2(req->interp, envvar, key, val, 0);
+
Tcl_DecrRefCount(key);
Tcl_DecrRefCount(val);
}
@@ -455,8 +465,11 @@ TclWeb_GetHeaderVars(Tcl_Obj *headersvar
val = TclWeb_StringToUtfToObj(hdrs[i].val, req);
Tcl_IncrRefCount(key);
Tcl_IncrRefCount(val);
- Tcl_ObjSetVar2(req->interp, headersvar,
- key, val, TCL_NAMESPACE_ONLY);
+
+ /* See comment in TclWeb_GetEnvVars concerning Bug 48963*/
+
+ Tcl_ObjSetVar2(req->interp, headersvar, key, val, 0);
+
Tcl_DecrRefCount(key);
Tcl_DecrRefCount(val);
}
Modified: tcl/rivet/tags/2.0.4/src/apache-1/rivetCore.c
URL: http://svn.apache.org/viewvc/tcl/rivet/tags/2.0.4/src/apache-1/rivetCore.c?rev=1175070&r1=1175069&r2=1175070&view=diff
==============================================================================
--- tcl/rivet/tags/2.0.4/src/apache-1/rivetCore.c (original)
+++ tcl/rivet/tags/2.0.4/src/apache-1/rivetCore.c Fri Sep 23 23:27:51 2011
@@ -38,14 +38,15 @@
#include <string.h>
#include <apr_tables.h>
#include <apr_errno.h>
+#include <apr_strings.h>
#include "apache_request.h"
#include "mod_rivet.h"
#include "rivet.h"
#include "TclWeb.h"
-#define ENV_ARRAY_NAME "env"
-#define HEADERS_ARRAY_NAME "headers"
+#define ENV_ARRAY_NAME "::request::env"
+#define HEADERS_ARRAY_NAME "::request::headers"
#define COOKIES_ARRAY_NAME "cookies"
extern module rivet_module;
@@ -71,17 +72,64 @@ extern char* TclWeb_GetRawPost (TclWebRe
TCL_CMD_HEADER( Rivet_MakeURL )
{
- Tcl_Obj *result = NULL;
- rivet_interp_globals *globals = Tcl_GetAssocData(interp, "rivet", NULL);
+ Tcl_Obj* result = NULL;
+ rivet_interp_globals* globals = Tcl_GetAssocData(interp,"rivet",NULL);
+ char* url_target_name;
+ int target_length;
- if (objc != 2)
+ if (objc > 2)
{
Tcl_WrongNumArgs(interp, 1, objv, "filename");
return TCL_ERROR;
}
- result = Tcl_NewObj();
- TclWeb_MakeURL(result, Tcl_GetString(objv[1]), globals->req);
+
+ if (objc == 1)
+ {
+ url_target_name = TclWeb_GetEnvVar (globals->req,"SCRIPT_NAME");
+ }
+ else
+ {
+ url_target_name = Tcl_GetStringFromObj(objv[1],&target_length);
+
+ // we check the first character for a '/' (absolute path)
+ // If we are dealing with a relative path we prepend it with
+ // the SCRIPT_NAME environment variable
+
+ if (url_target_name[0] != '/')
+ {
+ /* relative path */
+ char* script_name = TclWeb_GetEnvVar (globals->req,"SCRIPT_NAME");
+ int script_name_l = strlen(script_name);
+
+ // regardless the reason for SCRIPT_NAME being undefined we
+ // prevent a segfault and we revert the behavior of makeurl
+ // to the case of an absolute path
+
+ if (script_name_l > 0)
+ {
+ // script name may have the form of a directory path (and mod_rewrite
+ // could have mapped it to a .tcl or .rvt script)
+
+ if (script_name[script_name_l-1] == '/')
+ {
+ url_target_name = ap_pstrcat(POOL,script_name,url_target_name,NULL);
+ }
+ else
+ {
+ url_target_name = ap_pstrcat(POOL,script_name,"/",url_target_name,NULL);
+ }
+ }
+ else
+ {
+ url_target_name = ap_pstrcat(POOL,"/",url_target_name,NULL);
+ }
+ }
+ }
+
+ result = Tcl_NewObj();
+ TclWeb_MakeURL(result, url_target_name, globals->req);
Tcl_SetObjResult(interp, result);
+
return TCL_OK;
}
@@ -818,7 +866,6 @@ TCL_CMD_HEADER( Rivet_ApacheTable )
TCL_CMD_HEADER( Rivet_Upload )
{
char *varname = NULL;
- char *command = NULL;
int subcommandindex;
@@ -850,7 +897,6 @@ TCL_CMD_HEADER( Rivet_Upload )
};
rivet_interp_globals *globals = Tcl_GetAssocData(interp, "rivet", NULL);
- command = Tcl_GetString(objv[1]);
Tcl_GetIndexFromObj(interp, objv[1], SubCommand,
"channel|save|data|exists|size|type|filename|tempname|names",
0, &subcommandindex);
@@ -1201,7 +1247,6 @@ TCL_CMD_HEADER( Rivet_VirtualFilenameCmd
TCL_CMD_HEADER( Rivet_LogErrorCmd )
{
- char *loglevel = NULL;
char *message = NULL;
server_rec *serverRec;
@@ -1239,7 +1284,7 @@ TCL_CMD_HEADER( Rivet_LogErrorCmd )
return TCL_ERROR;
}
- loglevel = Tcl_GetString(objv[1]);
+// loglevel = Tcl_GetString(objv[1]);
message = Tcl_GetString (objv[2]);
if (Tcl_GetIndexFromObj(interp, objv[1], logLevel,
"emerg|alert|crit|err|warning|notice|info|debug",
Modified: tcl/rivet/tags/2.0.4/src/apache-2/rivetCore.c
URL: http://svn.apache.org/viewvc/tcl/rivet/tags/2.0.4/src/apache-2/rivetCore.c?rev=1175070&r1=1175069&r2=1175070&view=diff
==============================================================================
--- tcl/rivet/tags/2.0.4/src/apache-2/rivetCore.c (original)
+++ tcl/rivet/tags/2.0.4/src/apache-2/rivetCore.c Fri Sep 23 23:27:51 2011
@@ -34,10 +34,8 @@
#include "http_log.h"
#include "http_main.h"
#include "util_script.h"
-//#include "http_conf_globals.h"
#include "http_config.h"
-
#include <tcl.h>
#include <string.h>
#include <stdio.h>
---------------------------------------------------------------------
To unsubscribe, e-mail: rivet-cvs-unsubscribe@tcl.apache.org
For additional commands, e-mail: rivet-cvs-help@tcl.apache.org