At 10:40 PM 1/11/2004, Greg Fausak wrote:
I have a hard time articulating my real question :-)
What I was asking was :
As long as I record route an INVITE, does that make everything else record-routed (meaning that I pick it up with the loose_route())?
After an INVITE, which initiated a call, was record-routed (proxy inserted Record_route using record_route()), subsequent SIP requests belonging to the same call (BYE typically) must take the same path. That is accomplished as follows: UAs must put record-routing information collected using INVITE in Route header fields of the BYE and proxy servers must forward the request using this information (as opposed to executing some other routing logic.) SER implements this with the action loose_route().
Note that CANCEL takes the same path but not because of record-routing. Routing information has not been recorded yet before 200 came back. There is other way to keep CANCEL in the same path as INVITE. All SIP elements are supposed to remember INVITE transaction until finished and if a CANCEL comes, send it to the same adress to which they sent INVITE.
The answer is no, you still have to route calls...loose_route() doesn't pick up everything.
Anyway, here is a packet trace from a call.
- Inbound, through a PSTN.
- Routed to the UA.
- The caller hangs up, causing a cancel.
Does the trace look right? In particular, the CANCELing 200 message and the cancelled 487...is that the way it is supposed to look?
yes, the attached call flow seems correct to me.
Some other example call-flows in IETF documents may look slighlty different but that's not normative. Particularly, the 487 may be forwarded from downstream (as opposed to generating them localy by proxy) but that would add extra latency if downstream UAS becomes unresponsive.
-jiri