Merge branch 'master' into smgmaster

This commit is contained in:
Konrad Hammel 2011-03-17 17:29:44 -04:00
commit 8f0aa122bf
2 changed files with 20 additions and 4 deletions

View File

@ -466,6 +466,14 @@ void sngss7_sta_ind(uint32_t suInstId, uint32_t spInstId, uint32_t circuit, uint
uint32_t intfId; uint32_t intfId;
int x; int x;
/* confirm that the circuit is active on our side otherwise move to the next circuit */
if (!sngss7_test_flag(&g_ftdm_sngss7_data.cfg.isupCkt[circuit], SNGSS7_ACTIVE)) {
SS7_ERROR("[CIC:%d]Rx %s but circuit is not active yet, skipping!\n",
g_ftdm_sngss7_data.cfg.isupCkt[circuit].cic,
DECODE_LCC_EVENT(evntType));
return;
}
/* check if the eventType is a pause/resume */ /* check if the eventType is a pause/resume */
switch (evntType) { switch (evntType) {
/**************************************************************************/ /**************************************************************************/
@ -478,6 +486,12 @@ void sngss7_sta_ind(uint32_t suInstId, uint32_t spInstId, uint32_t circuit, uint
*/ */
intfId = g_ftdm_sngss7_data.cfg.isupCkt[circuit].infId; intfId = g_ftdm_sngss7_data.cfg.isupCkt[circuit].infId;
if (g_ftdm_sngss7_data.cfg.isupCkt[circuit].type != VOICE) {
SS7_DEBUG("Rx %s on circuit that is not a voice CIC (%d) finding a new circuit\n",
DECODE_LCC_EVENT(evntType),
g_ftdm_sngss7_data.cfg.isupCkt[circuit].cic);
}
x = (g_ftdm_sngss7_data.cfg.procId * 1000) + 1; x = (g_ftdm_sngss7_data.cfg.procId * 1000) + 1;
while ((g_ftdm_sngss7_data.cfg.isupCkt[x].id != 0) && while ((g_ftdm_sngss7_data.cfg.isupCkt[x].id != 0) &&
(g_ftdm_sngss7_data.cfg.isupCkt[x].id < ((g_ftdm_sngss7_data.cfg.procId +1) * 1000))) { (g_ftdm_sngss7_data.cfg.isupCkt[x].id < ((g_ftdm_sngss7_data.cfg.procId +1) * 1000))) {
@ -487,10 +501,6 @@ void sngss7_sta_ind(uint32_t suInstId, uint32_t spInstId, uint32_t circuit, uint
/* compare the intfIds */ /* compare the intfIds */
if (g_ftdm_sngss7_data.cfg.isupCkt[x].infId == intfId) { if (g_ftdm_sngss7_data.cfg.isupCkt[x].infId == intfId) {
if (g_ftdm_sngss7_data.cfg.isupCkt[circuit].type == VOICE) {
}
/* we have a match, setup the pointers to the correct values */ /* we have a match, setup the pointers to the correct values */
circuit = x; circuit = x;

View File

@ -1389,11 +1389,17 @@ static ftdm_status_t ftdm_sangoma_ss7_start(ftdm_span_t * span)
for (x = 1; x < (span->chan_count + 1); x++) { for (x = 1; x < (span->chan_count + 1); x++) {
/* extract the channel structure and sngss7 channel data */ /* extract the channel structure and sngss7 channel data */
ftdmchan = span->channels[x]; ftdmchan = span->channels[x];
/* if there is no sig mod data move along */
if (ftdmchan->call_data == NULL) continue; if (ftdmchan->call_data == NULL) continue;
sngss7_info = ftdmchan->call_data; sngss7_info = ftdmchan->call_data;
sngss7_span = ftdmchan->span->signal_data; sngss7_span = ftdmchan->span->signal_data;
sngss7_intf = &g_ftdm_sngss7_data.cfg.isupIntf[sngss7_info->circuit->infId]; sngss7_intf = &g_ftdm_sngss7_data.cfg.isupIntf[sngss7_info->circuit->infId];
/* if this is a non-voice channel, move along */
if (sngss7_info->circuit->type != VOICE) continue;
/* lock the channel */ /* lock the channel */
ftdm_mutex_lock(ftdmchan->mutex); ftdm_mutex_lock(ftdmchan->mutex);