[asterisk-ss7] Release cause problem

Anton anton.vazir at gmail.com
Wed Nov 22 04:18:08 MST 2006


Hangup(${DISCONNECTCAUSE}) or made a conditional 
Hangup(CAUSECODE) if returned causecodes are non-standard

On 22 November 2006 15:49, Peter Demeter wrote:
> 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


More information about the asterisk-ss7 mailing list