oh, duh! Of course you are right. What was I thinking? Sorry, Paul
Anders Kristensen wrote: > 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 > _______________________________________________ Sip-implementors mailing list Sip-implementors@lists.cs.columbia.edu https://lists.cs.columbia.edu/cucslists/listinfo/sip-implementors