freetdm: Fix SS7 T35 timer
This commit is contained in:
parent
b719983933
commit
1ba6d277fa
|
@ -56,21 +56,22 @@ void handle_isup_t35(void *userdata)
|
||||||
ftdm_channel_t *ftdmchan = sngss7_info->ftdmchan;
|
ftdm_channel_t *ftdmchan = sngss7_info->ftdmchan;
|
||||||
|
|
||||||
/* now that we have the right channel...put a lock on it so no-one else can use it */
|
/* now that we have the right channel...put a lock on it so no-one else can use it */
|
||||||
ftdm_mutex_lock(ftdmchan->mutex);
|
ftdm_channel_lock(ftdmchan);
|
||||||
|
|
||||||
|
/* Q.764 2.2.5 Address incomplete (T35 expiry action is hangup with cause 28 according to Table A.1/Q.764) */
|
||||||
SS7_ERROR("[Call-Control] Timer 35 expired on CIC = %d\n", sngss7_info->circuit->cic);
|
SS7_ERROR("[Call-Control] Timer 35 expired on CIC = %d\n", sngss7_info->circuit->cic);
|
||||||
|
|
||||||
/* set the flag to indicate this hangup is started from the local side */
|
/* set the flag to indicate this hangup is started from the local side */
|
||||||
sngss7_set_ckt_flag(sngss7_info, FLAG_LOCAL_REL);
|
sngss7_set_ckt_flag(sngss7_info, FLAG_LOCAL_REL);
|
||||||
|
|
||||||
/* hang up on timer expiry */
|
/* hang up on timer expiry */
|
||||||
ftdmchan->caller_data.hangup_cause = 28;
|
ftdmchan->caller_data.hangup_cause = FTDM_CAUSE_INVALID_NUMBER_FORMAT;
|
||||||
|
|
||||||
/* end the call */
|
/* end the call */
|
||||||
ftdm_set_state(ftdmchan, FTDM_CHANNEL_STATE_CANCEL);
|
ftdm_set_state(ftdmchan, FTDM_CHANNEL_STATE_CANCEL);
|
||||||
|
|
||||||
/*unlock*/
|
/*unlock*/
|
||||||
ftdm_mutex_unlock(ftdmchan->mutex);
|
ftdm_channel_unlock(ftdmchan);
|
||||||
|
|
||||||
SS7_FUNC_TRACE_EXIT(__FUNCTION__);
|
SS7_FUNC_TRACE_EXIT(__FUNCTION__);
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -2966,9 +2966,10 @@ static int ftmod_ss7_fill_in_ccSpan(sng_ccSpan_t *ccSpan)
|
||||||
g_ftdm_sngss7_data.cfg.isupCkt[x].t17 = ccSpan->t17;
|
g_ftdm_sngss7_data.cfg.isupCkt[x].t17 = ccSpan->t17;
|
||||||
}
|
}
|
||||||
if (ccSpan->t35 == 0) {
|
if (ccSpan->t35 == 0) {
|
||||||
g_ftdm_sngss7_data.cfg.isupCkt[x].t17 = 170;
|
/* Q.764 2.2.5 Address incomplete (T35 is 15-20 seconds according to Table A.1/Q.764) */
|
||||||
|
g_ftdm_sngss7_data.cfg.isupCkt[x].t35 = 170;
|
||||||
} else {
|
} else {
|
||||||
g_ftdm_sngss7_data.cfg.isupCkt[x].t17 = ccSpan->t35;
|
g_ftdm_sngss7_data.cfg.isupCkt[x].t35 = ccSpan->t35;
|
||||||
}
|
}
|
||||||
if (ccSpan->tval == 0) {
|
if (ccSpan->tval == 0) {
|
||||||
g_ftdm_sngss7_data.cfg.isupCkt[x].tval = 10;
|
g_ftdm_sngss7_data.cfg.isupCkt[x].tval = 10;
|
||||||
|
|
Loading…
Reference in New Issue