From 6e25cfa46a685bdda3d105c508627cd4294e1d0f Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Thu, 29 Nov 2007 18:41:40 +0000 Subject: [PATCH] update git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@6437 d0543943-73ff-0310-b7d9-9358b9ac24b2 --- .../languages/mod_spidermonkey/mod_spidermonkey.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/mod/languages/mod_spidermonkey/mod_spidermonkey.c b/src/mod/languages/mod_spidermonkey/mod_spidermonkey.c index 1c648365cb..4290c7c670 100644 --- a/src/mod/languages/mod_spidermonkey/mod_spidermonkey.c +++ b/src/mod/languages/mod_spidermonkey/mod_spidermonkey.c @@ -133,6 +133,10 @@ struct input_callback_state { JSObject *obj; jsrefcount saveDepth; void *extra; + struct js_session *jss_a; + struct js_session *jss_b; + JSObject *session_obj_a; + JSObject *session_obj_b; }; struct fileio_obj { @@ -1019,6 +1023,12 @@ static switch_status_t js_common_callback(switch_core_session_t *session, void * argv[argc++] = cb_state->arg; } + if (cb_state->jss_a && cb_state->jss_a->session && cb_state->jss_a->session == session) { + argv[argc++] = OBJECT_TO_JSVAL(cb_state->session_obj_a); + } else if (cb_state->jss_b && cb_state->jss_b->session && cb_state->jss_b->session == session) { + argv[argc++] = OBJECT_TO_JSVAL(cb_state->session_obj_b); + } + if (jss->stack_depth > MAX_STACK_DEPTH) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Maximum recursive callback limit %d reached.\n", MAX_STACK_DEPTH); jss->stack_depth--; @@ -3145,7 +3155,10 @@ static JSBool js_bridge(JSContext * cx, JSObject * obj, uintN argc, jsval * argv cb_state.cx = cx; cb_state.obj = obj; - + cb_state.jss_a = jss_a; + cb_state.jss_b = jss_b; + cb_state.session_obj_a = session_obj_a; + cb_state.session_obj_b = session_obj_b; cb_state.session_state = jss_a; dtmf_func = js_collect_input_callback; bp = &cb_state;