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