[Freeswitch-svn] [commit] r7230 - freeswitch/trunk/src/mod/languages/mod_spidermonkey

Freeswitch SVN anthm at freeswitch.org
Mon Jan 14 19:06:16 EST 2008


Author: anthm
Date: Mon Jan 14 19:06:15 2008
New Revision: 7230

Modified:
   freeswitch/trunk/src/mod/languages/mod_spidermonkey/mod_spidermonkey.c

Log:
fix potential locking issue

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	Mon Jan 14 19:06:15 2008
@@ -38,6 +38,7 @@
 #include <curl/curl.h>
 #endif
 static int foo = 0;
+static switch_mutex_t *mutex;
 
 
 SWITCH_MODULE_LOAD_FUNCTION(mod_spidermonkey_load);
@@ -3404,6 +3405,7 @@
 	JSContext *cx = NULL;
 	jsval rval;
 
+	switch_mutex_lock(mutex);
 
 	if ((cx = JS_NewContext(globals.rt, globals.gStackChunkSize))) {
 		JS_BeginRequest(cx);
@@ -3423,7 +3425,7 @@
 
 	} else {
 		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Allocation Error!\n");
-		return;
+		goto end;
 	}
 
 	script = input_code;
@@ -3448,11 +3450,17 @@
 			eval_some_js(buf, cx, javascript_global_object, &rval);
 		}
 	}
-
+	
 	if (cx) {
 		eval_some_js(script, cx, javascript_global_object, &rval);
 		JS_DestroyContext(cx);
 	}
+	
+ end:
+	switch_mutex_unlock(mutex);
+
+	return;
+
 }
 
 SWITCH_STANDARD_APP(js_dp_function)
@@ -3579,6 +3587,8 @@
 
 	curl_global_init(CURL_GLOBAL_ALL);
 
+	switch_mutex_init(&mutex, SWITCH_MUTEX_NESTED, pool);
+
 	/* indicate that the module should continue to be loaded */
 	return SWITCH_STATUS_SUCCESS;
 }



More information about the Freeswitch-svn mailing list