<div dir="ltr"><div><div><div><div><div><div>I am using AMI to originate<br><br>Action: Originate<br>Channel: SIP/5511996175361@UPVOX<br>Context: FD_106_010_INICIO<br>Earlymedia: 1<br>ActionID: CALL_42240<br>Exten: s<br>Priority: 1<br>Async: 1<br>Timeout: 55000<br><br><br>Context FD_106_010_INICIO starts an FASTAGI program which starts an app that just waits for<b> f->subclass.integer == AST_CONTROL_ANSWER</b><br><br>if (f->frametype == AST_FRAME_CONTROL) {<br>            if (f->subclass.integer == AST_CONTROL_ANSWER) {<br>                ast_frfree(f);<br>                break;<br>            }<br>}<br><br></div>If I issue a <b>hangup request</b> on that channel, follow is <b>true</b>!<br><br>        if (!(f = ast_read(chan))) {<br>            break;<br>        }<br><br></div>But looking at SNGREP the call is in SETUP.<br><br></div>I changed sip_hangup to inspect values<br><br>ast_verb(3, "************** HANGUP 14.1 %d < % d - %d != %d \n", p->invitestate,INV_COMPLETED,ast_channel_state(p->owner),AST_STATE_UP);<br><br></div>and <b>ast_channel_state(p->owner) was equal to AST_STATE_UP</b><br><br></div>This avoids <b>needcancel = TRUE</b> and therefore SIP doesn't send a CANCEL to SIP PROVIDER<br><br></div>For tests only, I removed the check over channel state and CANCEL have been sent to SIP PROVIDER.<br><br><br><div><div><div><div><br></div></div></div></div></div><div class="gmail_extra"><br clear="all"><div><div class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr"><div><br><br></div><div>Atenciosamente,<br><br><img src="http://fastway.com.br/assinaturas/jpg/assinatura_branca_valter-min.jpg"><br></div></div></div></div></div></div></div></div></div></div>
<br><div class="gmail_quote">2017-05-02 18:52 GMT-03:00 Joshua Colp <span dir="ltr"><<a href="mailto:jcolp@digium.com" target="_blank">jcolp@digium.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On Tue, May 2, 2017, at 06:47 PM, Valter Nogueira wrote:<br>
> I am originating call using early media option.<br>
><br>
> Whe I issue a hangup (like in hangup request sip/...) before the b-leg<br>
> answer, it don't send a SIP CANCEL and the call keeps going on.<br>
><br>
> I figured out that it is happening due to sip_hangup() checks:<br>
><br>
> * if (p->invitestate < INV_COMPLETED && ast_channel_state(p->owner) !=<br>
> AST_STATE_UP) {*<br>
><br>
> * needcancel = TRUE;*<br>
> * ast_debug(4, "Hanging up channel in state %s (not UP)\n",<br>
> ast_state2str(ast_channel_<wbr>state(ast)));*<br>
> * }*<br>
><br>
> And *ast_channel_state(p->owner) == AST_STATE_UP*<br>
><br>
> I guess that early media option puts channel state in AST_STATE_UP<br>
><br>
> So, is there a way to not set up channel state to *AST_STATE_UP* in early<br>
> media? Or the state check could be removed?<br>
<br>
Early media doesn't change the channel state to AST_STATE_UP. This only<br>
occurs if the channel is actually answered. I'd suggest providing more<br>
details about the precise scenario including any dialplan.<br>
<span class="HOEnZb"><font color="#888888"><br>
--<br>
Joshua Colp<br>
Digium, Inc. | Senior Software Developer<br>
445 Jan Davis Drive NW - Huntsville, AL 35806 - US<br>
Check us out at: <a href="http://www.digium.com" rel="noreferrer" target="_blank">www.digium.com</a> & <a href="http://www.asterisk.org" rel="noreferrer" target="_blank">www.asterisk.org</a><br>
<br>
--<br>
______________________________<wbr>______________________________<wbr>_________<br>
-- Bandwidth and Colocation Provided by <a href="http://www.api-digital.com" rel="noreferrer" target="_blank">http://www.api-digital.com</a> --<br>
<br>
asterisk-dev mailing list<br>
To UNSUBSCRIBE or update options visit:<br>
   <a href="http://lists.digium.com/mailman/listinfo/asterisk-dev" rel="noreferrer" target="_blank">http://lists.digium.com/<wbr>mailman/listinfo/asterisk-dev</a><br>
</font></span></blockquote></div><br></div>