[asterisk-ss7] Release cause problem

Peter Demeter pdemeter at gmail.com
Wed Nov 22 03:49:18 MST 2006


Hi,

I have a problem with chan_ss7 & Asterisk.

If an IP Phone (SIP) calls a PSTN number and the call is terminated by the
calling party chan_ss7 won't (?) recieve a release cause from Asterisk.  In
my case this means that the release cause will be 41 (Temporary Failure) in
the connecting EWSD switch instead of 16 (Normal Call Clearing).

IP phone calls PSTN -> IP side releases call -> Temporary failure
IP phone calls PSTN -> PSTN side releases call -> Normal Call Clearing
PSTN calls IP phone -> IP side releases call -> Normal Call Clearing
PSTN calls IP phone -> PSTN side releases call -> Normal Call Clearing

I tried with:
Asterisk 1.2.10 & chan_ss7 0.8.4
Asterisk 1.2.10 & chan_ss7 0.9
Asterisk 1.2.13 & chan_ss7 0.9

Based on chan_ss7 0.9 l4isup.c, I guess the developers are aware of this
poblem:
static void initiate_release_circuit(struct ss7_chan* pvt, int cause)
{
  pvt->hangupcause = cause; /* Remember for REL retransmit */
  /* We sometimes get hangupcause=0 (seen when no match in dialplan, not
     even invalid handler). This doesn't work too well, for example
     ast_softhangup() doesn't actually hang up when hangupcause=0. */
  if(pvt->hangupcause == 0) {
    pvt->hangupcause = AST_CAUSE_NORMAL_TEMPORARY_FAILURE;
  }
  isup_send_rel(pvt, pvt->hangupcause);
  pvt->state = ST_SENT_REL;
  /* Set up timer T1 and T5 waiting for RLC. */
  t1_start(pvt);
  t5_start(pvt);
}

Anybody knows a way to correct this?  Preferably within Asterisk.  As a
temporal solution I modified l4isup.c, but I think it's not the correct
place to do it.

Regards,
Peter
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.digium.com/pipermail/asterisk-ss7/attachments/20061122/a9fcdabf/attachment.htm


More information about the asterisk-ss7 mailing list