Paul,

Unless I'm much mistaken proxies can only forward one non-2xx final 
response upstream. Multiple early-dialogs don't change that.

Thanks,
Anders

On 2/22/2010 1:40 PM, Paul Kyzivat wrote:
> At end...
>
> Aaron Clauson wrote:
>>> -----Original Message-----
>>> From: Dale Worley [mailto:dwor...@avaya.com]
>>> Sent: Monday, 22 February 2010 4:42 PM
>>> On Thu, 2010-02-18 at 02:50 +0000, Aaron Clauson wrote:
>>>
>>> You should be able to do this in a standard way.
>>>
>>> First, let us assume that an address of the client (which is acting as
>>> UAS in this situation) is<sip:UAS>.
>>>
>>> The incoming request is "METHOD sip:UAS".  Once the client obtains the
>>> first redirect URI,<sip:DEST1>, it responds "SIP/2.0 302 Moved
>>> Temp/Contact: sip:DEST1/Contact:<sip:UAS;phase=2>".
>>>
>>> This causes the requestor to fork to<sip:DEST1>, but the requestor
>>> also
>>> forks to<sip:UAS;phase=2>.  The latter request goes back to the
>>> client,
>>> bit it is tagged so the client knows to proceed with the second phase
>>> of
>>> processing for the request.
>>>
>>
>> The problem I have is that the client does not actually know all the
>> redirects at the point the first one is sent. The client has a human user
>> pressing buttons to initiate the redirects and there could be gaps of
>> 1,2,5,10 etc. seconds between subsequent forwards.
>>
>> In the meantime I went ahead and used a custom info response of "184
>> Multiple Redirect" which does the job perfectly.
>
> Well, that is entirely proprietary. And if you are putting the "redirect
> URIs" into the 184 as Contact headers, then you are also messing up
> dialog state.
>
> I didn't fully understand what Dale was suggesting, but I can suggest
> someting along the same lines:
>
> The trick is that you want to send a 3xx, but you want the option to
> send another 3xx later. You can't do that in the same early dialog, but
> you can do it in multiple early dialogs. But to do that you must
> convince the caller that there is another dialog to wait on.
>
> So,
>
> When your server decides it wants to do this, it should send a 183
> response a to-tag defining an early dialog. This should be a reliable
> 1xx if you are permitted to do that.
>
> Then when it has an address it wants to send back, it can send a 3xx,
> but with a *different* to-tag. (This indicates you forked the call and
> the 3xx is from a different leg.)
>
> If you later have another address to return, repeat the above with a
> different to-tag.
>
> When you are done playing these games, you can send the final address in
> a 3xx with the same to-tag as the 183. Or if you have no more addresses,
> just return 480 with that to-tag.
>
> That's all fully standards compliant, and should elicit the right
> behavior from any caller that is capable of doing something reasonable
> with multiple 3xx responses.
>
>       Thanks,
>       Paul
> _______________________________________________
> Sip-implementors mailing list
> Sip-implementors@lists.cs.columbia.edu
> https://lists.cs.columbia.edu/cucslists/listinfo/sip-implementors
>
_______________________________________________
Sip-implementors mailing list
Sip-implementors@lists.cs.columbia.edu
https://lists.cs.columbia.edu/cucslists/listinfo/sip-implementors

Reply via email to