[Freeswitch-svn] [commit] r5443 - in freeswitch/trunk/src/mod/languages: mod_spidermonkey mod_spidermonkey_core_db mod_spidermonkey_odbc

Freeswitch SVN anthm at freeswitch.org
Fri Jun 22 15:59:57 EDT 2007


Author: anthm
Date: Fri Jun 22 15:59:57 2007
New Revision: 5443

Modified:
   freeswitch/trunk/src/mod/languages/mod_spidermonkey/mod_spidermonkey.c
   freeswitch/trunk/src/mod/languages/mod_spidermonkey/mod_spidermonkey.h
   freeswitch/trunk/src/mod/languages/mod_spidermonkey_core_db/mod_spidermonkey_core_db.c
   freeswitch/trunk/src/mod/languages/mod_spidermonkey_odbc/mod_spidermonkey_odbc.c

Log:
add exceptions to js and make invalid session access fatal + exception for a try/catch

Modified: freeswitch/trunk/src/mod/languages/mod_spidermonkey/mod_spidermonkey.c
==============================================================================
--- freeswitch/trunk/src/mod/languages/mod_spidermonkey/mod_spidermonkey.c	(original)
+++ freeswitch/trunk/src/mod/languages/mod_spidermonkey/mod_spidermonkey.c	Fri Jun 22 15:59:57 2007
@@ -44,19 +44,19 @@
 SWITCH_MODULE_SHUTDOWN_FUNCTION(mod_spidermonkey_shutdown);
 SWITCH_MODULE_DEFINITION(mod_spidermonkey, mod_spidermonkey_load, mod_spidermonkey_shutdown, NULL);
 
-#define METHOD_SANITY_CHECK() do {												\
+#define METHOD_SANITY_CHECK() do {										\
 if (!jss || !jss->session) {											\
-	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "You must call the session.originate method before calling this method!\n"); \
+	eval_some_js("~throw new Error(\"You must call the session.originate method before calling this method!\");", cx, obj, rval); \
 	*rval = BOOLEAN_TO_JSVAL(JS_FALSE);									\
-	return JS_TRUE;														\
+	return JS_FALSE;													\
  }																		\
 	} while(foo == 1)
 
-#define CHANNEL_SANITY_CHECK() do {				\
+#define CHANNEL_SANITY_CHECK() do {										\
 		if (!switch_channel_ready(channel)) {							\
-			switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Session is not active!\n"); \
+			eval_some_js("~throw new Error(\"Session is not active!\");", cx, obj, rval); \
 			*rval = BOOLEAN_TO_JSVAL(JS_FALSE);							\
-			return JS_TRUE;												\
+			return JS_FALSE;											\
 		}																\
 	} while (foo == 1)
 
@@ -838,6 +838,9 @@
 	jsval argv[4];
 	JSObject *Event = NULL;
 	jsval nval , *rval = &nval; 
+	JSContext *cx = cb_state->cx;
+	JSObject *obj = cb_state->obj;
+	
 
 	METHOD_SANITY_CHECK();
 
@@ -2561,6 +2564,13 @@
 /*********************************************************************************/
 static JSBool js_exit(JSContext * cx, JSObject * obj, uintN argc, jsval * argv, jsval * rval)
 {
+	char *supplied_error, code_buf[256] = "";
+	
+	if (argc > 0 && (supplied_error = JS_GetStringBytes(JS_ValueToString(cx, argv[0])))) {
+		snprintf(code_buf, sizeof(code_buf), "~throw new Error(\"%s\");", supplied_error);
+		eval_some_js(code_buf, cx, obj, rval);
+	}
+
 	return JS_FALSE;
 }
 

Modified: freeswitch/trunk/src/mod/languages/mod_spidermonkey/mod_spidermonkey.h
==============================================================================
--- freeswitch/trunk/src/mod/languages/mod_spidermonkey/mod_spidermonkey.h	(original)
+++ freeswitch/trunk/src/mod/languages/mod_spidermonkey/mod_spidermonkey.h	Fri Jun 22 15:59:57 2007
@@ -145,6 +145,7 @@
 
 JSBool DEFAULT_SET_PROPERTY(JSContext * cx, JSObject *obj, jsval id, jsval *vp)
 {
+	eval_some_js("~throw new Error(\"this property cannot be changed!\");", cx, obj, vp);
 	return JS_FALSE;
 }
 

Modified: freeswitch/trunk/src/mod/languages/mod_spidermonkey_core_db/mod_spidermonkey_core_db.c
==============================================================================
--- freeswitch/trunk/src/mod/languages/mod_spidermonkey_core_db/mod_spidermonkey_core_db.c	(original)
+++ freeswitch/trunk/src/mod/languages/mod_spidermonkey_core_db/mod_spidermonkey_core_db.c	Fri Jun 22 15:59:57 2007
@@ -247,6 +247,7 @@
 	char *name = JS_GetStringBytes(JS_ValueToString(cx, id));
 
 	if (strcmp(name, "_dB_RoW_DaTa_")) {
+		eval_some_js("~throw new Error(\"this property cannot be changed!\");", cx, obj, vp);
 		*vp = BOOLEAN_TO_JSVAL(JS_FALSE);
 	}
 	return JS_TRUE;

Modified: freeswitch/trunk/src/mod/languages/mod_spidermonkey_odbc/mod_spidermonkey_odbc.c
==============================================================================
--- freeswitch/trunk/src/mod/languages/mod_spidermonkey_odbc/mod_spidermonkey_odbc.c	(original)
+++ freeswitch/trunk/src/mod/languages/mod_spidermonkey_odbc/mod_spidermonkey_odbc.c	Fri Jun 22 15:59:57 2007
@@ -433,6 +433,7 @@
 	char *name = JS_GetStringBytes(JS_ValueToString(cx, id));
 
 	if (strcmp(name, "_oDbC_dB_RoW_DaTa_")) {
+		eval_some_js("~throw new Error(\"this property cannot be changed!\");", cx, obj, vp);
 		*vp = BOOLEAN_TO_JSVAL(JS_FALSE);
 	}
 	return JS_TRUE;



More information about the Freeswitch-svn mailing list