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

Reply via email to