break;
case FTDM_SIGEVENT_PROGRESS:
- case FTDM_SIGEVENT_PROGRESS_MEDIA:
{
if ((session = ftdm_channel_get_session(sigmsg->channel, 0))) {
channel = switch_core_session_get_channel(session);
}
break;
+ case FTDM_SIGEVENT_PROGRESS_MEDIA:
+ {
+ if ((session = ftdm_channel_get_session(sigmsg->channel, 0))) {
+ channel = switch_core_session_get_channel(session);
+ switch_channel_mark_pre_answered(channel);
+ switch_core_session_rwunlock(session);
+ }
+ }
+ break;
+
case FTDM_SIGEVENT_UP:
{
if ((session = ftdm_channel_get_session(sigmsg->channel, 0))) {
}
ft_r2_clean_call(ftdmchan->call_data);
- R2CALL(ftdmchan)->ftdm_call_started = 1;
- R2CALL(ftdmchan)->chanstate = FTDM_CHANNEL_STATE_DOWN;
- ftdm_set_state(ftdmchan, FTDM_CHANNEL_STATE_DIALING);
/* start io dump */
if (r2data->mf_dump_size) {
callstatus = openr2_chan_make_call(R2CALL(ftdmchan)->r2chan,
ftdmchan->caller_data.cid_num.digits,
ftdmchan->caller_data.dnis.digits,
- OR2_CALLING_PARTY_CATEGORY_NATIONAL_SUBSCRIBER);
+ r2data->category);
if (callstatus) {
ftdm_log_chan_msg(ftdmchan, FTDM_LOG_CRIT, "Failed to make call in R2 channel, openr2_chan_make_call failed\n");
return FTDM_BREAK;
}
+ R2CALL(ftdmchan)->ftdm_call_started = 1;
+ R2CALL(ftdmchan)->chanstate = FTDM_CHANNEL_STATE_DOWN;
+ ftdm_set_state(ftdmchan, FTDM_CHANNEL_STATE_DIALING);
+
ftdm_channel_set_feature(ftdmchan, FTDM_CHANNEL_FEATURE_IO_STATS);
ftdm_channel_command(ftdmchan, FTDM_COMMAND_FLUSH_TX_BUFFERS, NULL);
ftdm_channel_command(ftdmchan, FTDM_COMMAND_FLUSH_RX_BUFFERS, NULL);
hashtable_insert(spanpvt->r2calls, (void *)r2call->name, r2call, HASHTABLE_FLAG_FREE_VALUE);
}
r2data->mf_dump_size = r2conf.mf_dump_size;
+ r2data->category = r2conf.category;
r2data->flags = 0;
spanpvt->r2context = r2data->r2context;