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.
1) Inbound, through a PSTN.
2) Routed to the UA.
3) 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