On Thu, 2005-11-10 at 15:33 +0530, [EMAIL PROTECTED] wrote: > Can anybody expain me how looping is detected by the Proxy.
"Merging" is when a proxy or UA receives the same request through two paths that are "cousins" of each other, descendant from different branches of some fork. "Looping" is when a proxy receives a request that is a descendant of a copy of the request that that the proxy has received before. In principle, elements should reject merged (section 8.2.2.2) or looped (section 16.3 item 4) requests with 482 Loop Detected. But Dan Petrie has convinced me that proxies should not test for merged or looped requests. The reason is that it is impossible for a proxy to accurately determine whether two requests are "the same". Only the recipient UA can determine whether two requests are "the same". Spiraling commonly happens. A proxy can easily see that a spiraled request is different if the Request-URI is different. But what if an intermediate proxy has modified some of the minor headers? The request is "different" if and only if the ultimate recipient considers that header significant for processing the call. Similarly, two cousin requests that differ in a minor header might or might not be different from the UA's point of view. The proxy cannot safely reject the second one unless it knows that the second request would be accepted only if the first request would be accepted. And it cannot know that. So a proxy should not do loop/merge detection. (It can rely on Max- Forwards to detect infinite loops.) The UA rejects merged requests with 482 if it receives a second request that is functionally identical (as the UA sees it) t a previous one. Dale o _______________________________________________ Sip-implementors mailing list [email protected] http://lists.cs.columbia.edu/mailman/listinfo/sip-implementors
