[reSIProcate] Fw: CANCEL before provisional recieved.

Byron Campen bcampen at estacado.net
Fri May 4 08:53:11 CDT 2007


	Sending a CANCEL before a provisional response is invalid behavior.  
Right now, the stack forges a CANCEL/200 and sends it to the TU, but  
does not allow the CANCEL to hit the wire. From here, if B never  
sends a provisional, the INVITE transaction will time-out, causing  
the stack to send a simulated INVITE/408. However, if B does respond,  
the call will continue normally. (This is something a TU must be  
prepared to handle; just because you get a CANCEL/200 doesn't mean  
the remote UAS will end the INVITE transaction.) If B does send a  
provisional, but never sends a final response, it is up to A to  
decide at what point it wishes to end the transaction. (The TU does  
this by sending a CANCEL; this will cause the stack to put a CANCEL  
on the wire, and start a timer that will cause the INVITE transaction  
to be torn down, if it never gets a response)

Best regards,
Byron Campen

>
>
>
> "Scott Godin" <slgodin at icescape.com>
> Sent by: resiprocate-devel-bounces at list.resiprocate.org
> 04.05.2007 15:51
>
> To
> <Volodymyr.Stepanov at aricent.com>, <resiprocate- 
> devel at list.resiprocate.org>
> cc
> Subject
> Re: [reSIProcate] CANCEL before provisional recieved.
>
>
>
>
>
>>
> From: resiprocate-devel-bounces at list.resiprocate.org  
> [mailto:resiprocate-devel-bounces at list.resiprocate.org] On Behalf  
> Of Volodymyr.Stepanov at aricent.com
> Sent: Friday, May 04, 2007 7:57 AM
> To: resiprocate-devel at list.resiprocate.org
> Subject: [reSIProcate] CANCEL before provisional recieved.
>
>
> Hello!
>
> Currently i'm investigating SIP using resiprocate library.
> And i'm stuck at such problem.
> User A send INVITE to User B.
> After that A sends CANCEL and , like RFC sais i've no effect ,so  
> call remains established on the User B side.
> [Scott] It is unclear exactly what is happening here.  Did B send a  
> 200 response?  If B receives a CANCEL before sending a 200 then the  
> call should be cleared.
>
> What is the way to "fix" this problem?
> Currently if A try to send CANCEL in trying state I send BYE...Am I  
> doing right?
> [Scott] Not too sure what you are describing.  It is legal to send  
> a BYE after receiving a 18x response from an endpoint – this should  
> cause this leg of the call to be ended only – but the INVITE  
> transaction is still active, other potential forks can still  
> respond.  If you really want to terminate the entire call before  
> receiving a 200, you should send a CANCEL.  Note:  I’ve seen some  
> endpoints have trouble receiving a BYE in the trying state.  The  
> RFC is pretty clear on what is required on both sides for a CANCEL.
>
> I found couple of thougths about this problem in resiprocate-devel  
> mailing list ,but there os no specifically decision.
> Deeply appreciate for attention.
>
>
>
> // 
> ********************************************************************** 
> ********************************/
>
> Ok :)
> Try to explain my problem.
> Main issue is when user A tries to send CANCEL just after INVITE,  
> so no answers from B side recieved .
> In logs I have lines .
>
> DEBUG | 20070504-161143.776 | PortalAgent | RESIP:TRANSPORT | 1644  
> | Transport.cxx:258 | incoming from: [ V4 10.15.3.7:5060 UDP target  
> domain=unspecified received on: Transport: [ V4 10.15.8.37:5080 UDP  
> target domain=unspecified connectionId=0 ] on 10.15.8.37  
> connectionId=0 ]
> WARNING | 20070504-161143.776 | PortalAgent | RESIP:TRANSACTION |  
> 1644 | TransactionState.cxx:423 | You can't CANCEL a request until  
> a provisional has been received
> DEBUG | 20070504-161143.776 | PortalAgent | RESIP | 1644 |  
> Helper.cxx:302 | Helper::makeResponse(SipReq:  CANCEL admin/ 
> unittest3 at 10.15.3.7 tid=f179f93ee801be35 cseq=CANCEL / 1 from(tu)  
> code=200 reason=
> DEBUG | 20070504-161143.776 | PortalAgent | RESIP:TRANSACTION |  
> 1644 | TransactionState.cxx:1721 | Send to TU: TU:  
> DialogUsageManager size=0 SIP/2.0 200 OK
>
> On A side call hanged, but B remains  in the dark about this fact
>
> I understand ,that stack works like said in RFC, but what should I  
> do to prevent wrong call state on the B side?
>
>
> Thanks for patience :)
>
>
> Best regards,
>
> Volodymyr Stepanov
>
> A R I C E N T
>
> Kyiv, Ukraine
>
> MSN : stepanov_v_m at hotmail.com
> ICQ : 272708933_______________________________________________
> resiprocate-devel mailing list
> resiprocate-devel at list.resiprocate.org
> https://list.resiprocate.org/mailman/listinfo/resiprocate-devel
> _______________________________________________
> resiprocate-devel mailing list
> resiprocate-devel at list.resiprocate.org
> https://list.resiprocate.org/mailman/listinfo/resiprocate-devel

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://list.resiprocate.org/pipermail/resiprocate-devel/attachments/20070504/6c44fd87/attachment.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 2423 bytes
Desc: not available
URL: <http://list.resiprocate.org/pipermail/resiprocate-devel/attachments/20070504/6c44fd87/attachment.bin>


More information about the resiprocate-devel mailing list