[commit] r7230 - freeswitch/trunk/src/mod/languages/mod_spidermonkey
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; }
participants (1)
-
Freeswitch SVN