2010/12/6 Eugene Prokopiev <enp@altlinux.org>:
Is it possible to implement the same logic for off-hook members? Can you point me the line/function in mod_fifo.c in which off-hook member is selecting for call?
I tried to debug callflow with help of switch_log_printf. Two off-hook agents executes:
<action application="fifo" data="$1 out wait"/>
and waits in:
mod_fifo.c:2588 - moh_status = switch_ivr_play_file(session, NULL, moh, &args);
After executing:
<action application="fifo" data="$1 in"/>
only one off-hook agent leaves switch_ivr_play_file and process incoming call. Why can it leaves switch_ivr_play_file function?
I tried to debug switch_ivr_play_file function in switch_ivr_play_say.c with with help of switch_log_printf. I've found cycle with for (;;) which is interrupted by this code: if (args && (args->read_frame_callback)) { int ok = 1; switch_set_flag(fh, SWITCH_FILE_CALLBACK); if ((status = args->read_frame_callback(session, read_frame, args->user_data)) != SWITCH_STATUS_SUCCESS) { ok = 0; } switch_clear_flag(fh, SWITCH_FILE_CALLBACK); if (!ok) { break; } } But I can't find the reason to interruption. I tried to find it in mod_fifo.c:node_thread_run but it seems cycle in this function works only for on-hook agents. -- Thanks, Eugene Prokopiev