]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
FS-6334 --resolve mod_rayo: deadlock when creating input voice component
authorChris Rienzo <chris.rienzo@grasshopper.com>
Mon, 10 Mar 2014 19:53:26 +0000 (15:53 -0400)
committerChris Rienzo <chris.rienzo@grasshopper.com>
Mon, 10 Mar 2014 19:53:56 +0000 (15:53 -0400)
src/mod/event_handlers/mod_rayo/rayo_input_component.c

index eda4db3591727f934d9b3b585ec93830ce6b1d08..acb3decc6bad6842f517ec13248f81825e928f82 100644 (file)
@@ -514,9 +514,13 @@ static iks *start_call_voice_input(struct input_component *component, switch_cor
 
        /* start speech detection */
        switch_channel_set_variable(switch_core_session_get_channel(session), "fire_asr_events", "true");
+       switch_mutex_unlock(handler->mutex); /* unlock handler mutex, otherwise deadlock will happen when switch_ivr_detect_speech adds a new media bug */
        if (switch_ivr_detect_speech(session, component->recognizer, grammar.data, "mod_rayo_grammar", "", NULL) != SWITCH_STATUS_SUCCESS) {
+               switch_mutex_lock(handler->mutex);
                handler->voice_component = NULL;
                rayo_component_send_complete(RAYO_COMPONENT(component), COMPONENT_COMPLETE_ERROR);
+       } else {
+               switch_mutex_lock(handler->mutex);
        }
        switch_safe_free(grammar.data);