Jeroen van Bemmel wrote:
> Paul,
> 
> The worst case I had in mind is for a UAC sending reINVITE and then 
> immediately BYE over UDP, where due to reordering the BYE arrives first. 
> The goal is then to avoid that the reINVITE creates a new dialog at the 
> UAS.

I think the simplest way to solve that is to declare that a new invite 
dialog usage establishing request may not be sent within an existing 
dialog - that it may only be sent as a dialog establishing request (when 
there is no pre-existing dialog.)

That removes some of the potential flexibility of shared dialogs, which 
a lot of people will consider a good thing. I doubt that it removes any 
functionality that is actually supported by any existing deployment. 
(Anybody that knows of an implementation that currently supports that 
please speak up.)

I may be the only person who ever thought that sending a new invite 
within an existing dialog had any utility at all, and even I consider it 
marginal. Making it work right would probably require other changes that 
are not worth the trouble.

> Lingering for as long as the BYE transaction lives would normally 
> suffice. Alternatively, if the dialog is destroyed upon sending 200 OK 
> for BYE, the UAS can have a policy to send 481 for INVITEs with a 
> to-tag. But if that is for some reason not possible, keeping the state 
> around seems the only option

What I suggest above amounts to the same thing as sending some error for 
  INVITEs with a To-tag that don't match an existing invite dialog 
usage. Its just a matter of figuring out what error code is best. I'm 
dubious of 481 because it is already quite overloaded, but it might be 
ok. Another possibility is 403.

        Paul

> Regards,
> Jeroen
> 
> Paul Kyzivat wrote:
>> Jeroen van Bemmel wrote:
>>>> *Dialog* state must be reference counted. It will stay around at
>>>> least as long as any dialog usages remain. I think Jeroen really
>>>> means to suggest that the invite dialog usage state should stay
>>>> round as long as the BYE transaction. That *may* not be necessary.
>>>> What is required is enough state to reissue the BYE in the case
>>>> that it is challenged. But I don't think dialog usage state is
>>>> required to do that. But clearly one way to do that is to keep the
>>>> invite dialog usage until the 200 for the BYE arrives or the
>>>> transaction times out.
>>>
>>> I was talking about the UAS side. Just like the BYE ServerTransaction
>>> stays around to catch any retransmitted BYEs (and to resend OK), the
>>> dialog / dialog usage should stay around to catch any pending new
>>> transactions (and reply 481). Markus was saying that dialog state is
>>> destroyed as soon as the 200 OK for BYE is sent, my point was that it
>>> needs to stay around a little longer to handle this case
>>
>> I don't think it is at all clear that this is required.
>>
>> How long would you have this go on? If it is to happen at all, I would
>> be inclined to keep the dialog usage around as long as any
>> transactions associated with it linger. But as long as the
>> transactions linger, they can handle associated retransmissions even
>> without retaining the usage. So the purpose of keeping it would
>> apparently be to handle new transactions within the dialog or dialog
>> usage. I don't see any reason to do that. Returning 481 for those
>> should be just fine.
>> Paul 
> 
_______________________________________________
Sip-implementors mailing list
[email protected]
https://lists.cs.columbia.edu/cucslists/listinfo/sip-implementors

Reply via email to