<span class="gmail_quote"></span>Hi,<br><br>I have a problem with chan_ss7 & Asterisk.<br><br>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).
<br><br>IP phone calls PSTN -> IP side releases call -> Temporary failure<br>IP phone calls PSTN -> PSTN side releases call -> Normal Call Clearing<br>PSTN calls IP phone -> IP side releases call -> Normal Call Clearing
<br>PSTN calls IP phone -> PSTN side releases call -> Normal Call Clearing<br><br>I tried with:<br>Asterisk 1.2.10 & chan_ss7 0.8.4<br>Asterisk 1.2.10 & chan_ss7 0.9<br>Asterisk 1.2.13 & chan_ss7 0.9<br>
<br>Based on chan_ss7 0.9 l4isup.c, I guess the developers are aware of this poblem:<br>static void initiate_release_circuit(struct ss7_chan* pvt, int cause)<br>{<br> pvt->hangupcause = cause; /* Remember for REL retransmit */
<br> /* We sometimes get hangupcause=0 (seen when no match in dialplan, not<br> even invalid handler). This doesn't work too well, for example<br> ast_softhangup() doesn't actually hang up when hangupcause=0. */
<br>
if(pvt->hangupcause == 0) {<br> pvt->hangupcause = AST_CAUSE_NORMAL_TEMPORARY_FAILURE;<br> }<br> isup_send_rel(pvt, pvt->hangupcause);<br> pvt->state = ST_SENT_REL;<br> /* Set up timer T1 and T5 waiting for RLC. */
<br> t1_start(pvt);<br> t5_start(pvt);<br>}<br><br>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.<br><br>
Regards,
<br><span class="sg">Peter<br>
</span>