[asterisk-ss7] chan_ss7 1.4.3 bug with overlapping CIC numbers on combined linksets
Robert Verspuy
robert at exa-omicron.nl
Fri Jan 7 12:55:47 CST 2011
Op 06-01-11 19:19, Gregory Massel schreef:
> Hi Robert
Hi Gregory,
I don't see your e-mail on the asterisk-ss7 list. Are you still a member?
> I think the write buffer notice you're getting is normal audio loss
> due to the jitter buffer and jitter associated with the SIP channel.
That's my idea also.
> It seems that remove_from_idlelist() in l4isup.c may be the issue:
> static void remove_from_idlelist(struct ss7_chan *pvt) {
> struct linkset* linkset = pvt->link->linkset;
> struct ss7_chan *prev, *cur;
> cur = linkset->group_linkset->idle_list;
> prev = NULL;
> while(cur != NULL) {
> if(pvt->cic == cur->cic) {
> if(prev == NULL) {
> linkset->group_linkset->idle_list = pvt->next_idle;
> } else {
> prev->next_idle = pvt->next_idle;
> }
> pvt->next_idle = NULL;
> return;
> }
> prev = cur;
> cur = cur->next_idle;
> }
> ast_log(LOG_NOTICE, "Trying to remove CIC=%d from idle list, but not
> found?!?.\n", pvt->cic);
> }
> What concerns me is the following line:
> if(pvt->cic == cur->cic) {
> I get the impression that it should read something like:
> if(pvt->cic == cur->cic && linkset->dpc == cur->linkset->dpc) {
> In my mind, this should, in theory, ensure that the CIC is matched not
> just on the CIC number but also on the DPC.
> My thinking is that perhaps the current code is causing the wrong
> channel to be removed from the idle list.
> Does this sound logical to you?
Yes, maybe there is still an issue in this source.
But the problem is a bit more complicated.
With our connection to the Dutch ISUP (KPN), we have two linksets (Asd2
and Asd3).
The linksets do not share a E1's.
Both linksets have their own signalling link on the first E1.
But it is possible to receive signalling on the Asd2 signal link for a
call on CIC 25 from the Asd3 link.
So only checking the dpc is not enough. When calling the
remove_from_idlelist function, besides the pvt also the corresponding
dpc must be passed along,
just like I did in my patch.
> Unfortunately this doesn't explain why I'm experiencing the problem
> but you arn't, although I suspect that the crash may only occur once
> you try dial out a call using a channel that wasn't correctly removed
> from the idle list. Depending on the hunting policy in use, it may be
> that you're receiving calls on even CICs and making them on odd CICs
> as long as there are free CICs, in which case you may not experience
> the problem if you don't use more than 50% of your capacity. Just a
> theory...
We have seperate E1's for inbound and outbound traphic.
And we don't have much outbound traphic, maybe even nothing in the last
weeks.
> --Greg
With kind regards,
Robert
>
--
*Exa-Omicron*
Patroonsweg 10
3892 DB Zeewolde
Tel.: 088-OMICRON (66 427 66)
http://www.exa-omicron.nl
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-ss7/attachments/20110107/8fb4fdff/attachment.htm>
More information about the asterisk-ss7
mailing list