[Serusers] Race Condition on CANCEL?

Gustavo Passos Tourinho gustavo.passos.tourinho at gmail.com
Tue May 15 19:02:24 CEST 2007


Last question, I promise :)

A CANCEL request is hop-by-hop. If the proxy receives a cancel (using 
his server transaction) it should response and issue a CANCEL request 
(using his client transaction) to next hop.
So, if it receives a 200 OK after sent a CANCEL, shouldnt it send a BYE 
they self? Insted of relying it to caller?

As I promise, last question and thank you very much for your help.

Regards,

Greger V. Teigre escreveu:
> Inline.
>
> Gustavo Passos Tourinho wrote:
>> Hello All,
>>
>> I Guess that the Proxy relays 200 OK (INVITE) because it didnt 
>> destroyed the transaction correctely affter it was canceled, right?
>>   
> No, the proxy MUST relay the 200 OK. The caller UA (UAC) should then 
> send an immediate BYE. The callee UA (UAS) wrongly(?) sends a 200 OK 
> after it claims to cancel the call. However, this may happen due to a 
> race condition that is unavoidable (RFC3261)
>> I was looking for a possible configuration bug (ie. relaying 200 OK 
>> statelessly), but there is no such think. All relays are done by 
>> t_relay () function.
>>   
> Your problem is that the caller UA does not immediately send a BYE.
>> Another question. If a cancel request is not replyed with a response 
>> after some time, the UA should try to retransmit it? After reading 
>> the RFC 3 times I just so that the CANCEL cannot be challenge.
>>   
> That's correct, a CANCEL cannot be challenged (as in authentication).
> g-)
>> Well, thank you very much for your help.
>>
>> Regards,
>> Gustavo
>>
>> Greger V. Teigre escreveu:
>> > As I said, I would start finding out why the UA sends 200 OK after 
>> it has sent > canceling.
>> > There is no sign of any bugs in CANCEL transaction. As I explained, 
>> the CVS > trunk changes are related to how CANCELs are handled. Your 
>> CANCEL reaches the > UA ok.
>> > g-)
>> >
>> > Gustavo Passos Tourinho wrote:
>> >> Hi,
>> >>
>> >> So, is there a BUG in CANCEL transaction?
>> >>
>> >> How can I confirm this information?
>> >>
>> >> Thanks
>> >>
>> >> Atle Samuelsen escreveu:
>> >>> Hi,
>> >>>
>> >>> I might be wrong, but I think Andrei added some code in CVS head 
>> a few
>> >>> days back that addresses this issue. >>>
>> >>> -A
>> >>>
>> >>> * Gustavo Passos Tourinho <gustavo.passos.tourinho at gmail.com> 
>> [070511 13:57]:
>> >>>   >>>> Thanks for your reply.
>> >>>>
>> >>>> Yes, I have this problem right now. The problem is that when the 
>> proxy receives 200 OK (for INVITE, confirmed by CSeq), insted of 200 
>> Cancelling,  it issue >>>> an RADIUS request for billing.
>> >>>>
>> >>>> So, I will have an "Start-Invite" (200 OK), but will have not a 
>> "Stop-Bye" because the BYE message will not be generated.
>> >>>>
>> >>>> How can I ensure that the proxy will not forward 200 OK for 
>> INVITE? I mean, if it is a transaction statefull and the transaction 
>> doesnt existis, why it is >>>> stills forwarding the message? Is 
>> there any thing that I can do to prevent this kind of situation to 
>> occour?
>> >>>>
>> >>>> Thanks again.
>> >>>>
>> >>>> Regards,
>> >>>> Gustavo
>> >>>>
>> >>>> Greger V. Teigre escreveu:
>> >>>>     >>>>> No, the UAS (U2) shall answer with 200 OK to confirm 
>> that the call has been canceled and yes, it should be sent to U1.
>> >>>>> Do you have an actual experienced problem or was the 200 OK the 
>> problem?
>> >>>>> g-)
>> >>>>>
>> >>>>> Gustavo Passos Tourinho wrote:
>> >>>>>       >>>>>> Hello,
>> >>>>>>
>> >>>>>> Im having some problems with cancelled calls. This is the 
>> scenario:
>> >>>>>>
>> >>>>>> U1                                     
>> Proxy                                       U2
>> >>>>>>
>> >>>>>> INVITE   -->>>                                             
>> <<--- 100 Trying
>> >>>>>>                                         INVITE  -->>>
>> >>>>>>                                                                            
>> <<--- 100 Trying
>> >>>>>>                               <<--- 100 Trying  CANCEL  
>> ->>>                                              <<-- 200 Cancelling
>> >>>>>>                                          CANCEL 
>> ->>               <<-- 180 Ringing
>> >>>>>>                                <<-- 487 Cancelled
>> >>>>>>                                <<-- 180 Ringing
>> >>>>>>                                                                                                                                         
>> <<-- 200 OK
>> >>>>>>                                    (Wrong??)
>> >>>>>>                                 <<-- 200 OK
>> >>>>>>
>> >>>>>>
>> >>>>>> My problem is that after some time waiting for "ringing", the 
>> user cancel the call. Even that proxy responses "487" it still 
>> forward the late 200 OK.
>> >>>>>>
>> >>>>>> Should it forward? I guess not because the transaction was 
>> destroyed, right?
>> >>>>>>
>> >>>>>> Can it be a configuration problem on my ser.cfg ou it can be 
>> in t_relay implementation?
>> >>>>>>
>> >>>>>> Thanks in advanced.
>> >>>>>> Regards,
>> >>>>>>
>> >>>>>> Gustavo                       
>> _______________________________________________
>> >>>>>> Serusers mailing list
>> >>>>>> Serusers at lists.iptel.org
>> >>>>>> http://lists.iptel.org/mailman/listinfo/serusers
>> >>>>>>
>> >>>>>>
>> >>>>>>         >>>> _______________________________________________
>> >>>> Serusers mailing list
>> >>>> Serusers at lists.iptel.org
>> >>>> http://lists.iptel.org/mailman/listinfo/serusers
>> >>>>     >>>
>> >>>   >>
>>
>>   
>




More information about the sr-users mailing list