Jan Janak wrote:
Martin Hoffmann wrote:
Klaus Darilion wrote:
sl: (A) loose_route=true, --> just forward (B) loose_route=false, --> lookup()*, forward (C) loose_route=true, --> just forward (D) loose_route=true, --> lookup()**, forward
Just a quick reminder that lookup() and forward don't go together. A stateless proxy has to make the same decision for the same message (aka re-sent request). Since entries in usrloc expire, there is a good chance that a resent will be send somewhere else.
What makes you think that stateless proxies have to make the same decision for the same message?
RFC 3261, section 16.11:
| A stateless proxy MUST follow the request processing steps described | in Sections 16.4 through 16.5 with the following exception: | | o A stateless proxy MUST choose one and only one target from the | target set. This choice MUST only rely on fields in the | message and time-invariant properties of the server. In | particular, a retransmitted request MUST be forwarded to the | same destination each time it is processed. Furthermore, | CANCEL and non-Routed ACK requests MUST generate the same | choice as their associated INVITE.
You paragraph would make sense for stateful proxies for the duration of the transaction.
Well, no, since a stateful proxy makes the decision only once per transaction (it swallows re-sent messages).
Regards, Martin