[Users] Call not torn down when CANCEL sent before INVITE message is finished being processed

Klaus Darilion klaus.mailinglists at pernau.at
Wed Oct 5 12:00:52 CEST 2005


Bogdan-Andrei Iancu wrote:
> Hi Tavis,
> 
> please see my inline comments.
> 
> regards,
> bogdan
> 
> Tavis P wrote:
> 
>> With the latest CVS build of OSER, when an INVITE is sent followed by a
>> CANCEL, before OSER has finished processing the initial INVITE, the
>> outbound call is not torn down, and SER routes the CANCEL message to
>> itself.  
>>
> this is more a logical problem and not sure how it can be fixed (if it 
> can be fixed). The only idea it come into my mind is to delay the CANCEL 
> that does not match a transaction....but is quite ugly.

What about forwarding the CANCEL and keept in in memory. For every 
incoming INVITE we will first check if there is already a CANCEL for this.

>> I have a development cluster of mediaproxy servers setup and one of them
>> was taken offline but left in the loop which increased the time it took
>> for a message to be processed which is how i came across this situation
>> (it took some seconds before the INVITE was able to be transmitted to
>> the nexthop_proxy)
>>  
>>
> what you can do is to force transaction creation before any 
> time-consuming operations (use t_newtran to create the transaction) - 
> but be very, very carefully - you will have to use exclusively statefull 
> functions and what is more important, all later changes over the message 
> will not be saved into transaction.
> 
> .....and coming back to the idea: create the transaction, do all 
> time-consuming operations and forward. If in the mean while you get a 
> CANCEL, it will match the transaction, but it will not be forwarded 
> since there is no branch (no forward done); but once you get a reply for 
> the INVITE, OpenSER will remember that it was CANCEL and generate one - 
> this is a new feature of this release ;)

ugly

regards
klaus




More information about the Users mailing list