Revision
15598
Author
mrene
Date
2009-11-21 01:37:35 -0600 (Sat, 21 Nov 2009)

Log Message

mod_spidermonkey: allow inline javascript, use a ~ as first script character

Modified Paths

Diff

Modified: freeswitch/trunk/src/mod/languages/mod_spidermonkey/mod_spidermonkey.c (15597 => 15598)


--- freeswitch/trunk/src/mod/languages/mod_spidermonkey/mod_spidermonkey.c	2009-11-21 06:54:16 UTC (rev 15597)
+++ freeswitch/trunk/src/mod/languages/mod_spidermonkey/mod_spidermonkey.c	2009-11-21 07:37:35 UTC (rev 15598)
@@ -3597,6 +3597,10 @@
 	struct js_session *jss;
 	JSContext *cx = NULL;
 	jsval rval;
+	
+	if (zstr(input_code)) {
+		return;
+	}
 
 	if ((cx = JS_NewContext(globals.rt, globals.gStackChunkSize))) {
 		JS_BeginRequest(cx);
@@ -3620,24 +3624,26 @@
 
 	script = input_code;
 
-	if ((arg = strchr(script, ' '))) {
-		*arg++ = '\0';
-		argc = switch_separate_string(arg, ' ', argv, (sizeof(argv) / sizeof(argv[0])));
-	}
+	if (*script != '~') {	
+		if ((arg = strchr(script, ' '))) {
+			*arg++ = '\0';
+			argc = switch_separate_string(arg, ' ', argv, (sizeof(argv) / sizeof(argv[0])));
+		}
 
-	if (!argc) {
-		switch_snprintf(buf, sizeof(buf), "~var argv = new Array();");
-		eval_some_js(buf, cx, javascript_global_object, &rval);
-	} else {
-		/* create a js doppleganger of this argc/argv */
-		switch_snprintf(buf, sizeof(buf), "~var argv = new Array(%d);", argc);
-		eval_some_js(buf, cx, javascript_global_object, &rval);
-		switch_snprintf(buf, sizeof(buf), "~var argc = %d", argc);
-		eval_some_js(buf, cx, javascript_global_object, &rval);
+		if (!argc) {
+			switch_snprintf(buf, sizeof(buf), "~var argv = new Array();");
+			eval_some_js(buf, cx, javascript_global_object, &rval);
+		} else {
+			/* create a js doppleganger of this argc/argv */
+			switch_snprintf(buf, sizeof(buf), "~var argv = new Array(%d);", argc);
+			eval_some_js(buf, cx, javascript_global_object, &rval);
+			switch_snprintf(buf, sizeof(buf), "~var argc = %d", argc);
+			eval_some_js(buf, cx, javascript_global_object, &rval);
 
-		for (y = 0; y < argc; y++) {
-			switch_snprintf(buf, sizeof(buf), "~argv[%d] = \"%s\";", x++, argv[y]);
-			eval_some_js(buf, cx, javascript_global_object, &rval);
+			for (y = 0; y < argc; y++) {
+				switch_snprintf(buf, sizeof(buf), "~argv[%d] = \"%s\";", x++, argv[y]);
+				eval_some_js(buf, cx, javascript_global_object, &rval);
+			}
 		}
 	}