1) AFAIK, the Record-Route/Route headers are used by TM for maintaining
transaction state, unless you are relying on the 'dialog' module's "fast
matching" cookies, which are identifiers that get placed as a URI
parameter into the Record-Route header so that it is not necessary to
match the message by more conventional means (Via/branch, Call-ID, tags,
etc.)
2) ACK is a separate transaction; every request and reply sequence is a
transaction. So, if you're trying to match it to an existing INVITE
transaction, for instance, that won't happen.
t_check_trans() has special behaviour for ACKs, depending on whether
they're end-to-end ACKs or ACKs for negative replies to existing
transactions:
http://www.kamailio.org/docs/modules/3.0.x/modules/tm.html#t_check_trans
Are you sure that you're using it, or its newer variant,
t_lookup_request(), correctly?
3) You are, nevertheless, correct that the ACK should contain the RR header:
The UAC core MUST generate an ACK request for each 2xx received from
the transaction layer. The header fields of the ACK are constructed
in the same way as for any request sent within a dialog (see Section
12) with the exception of the CSeq and the header fields related to
authentication.
-- Alex
--
Alex Balashov - Principal
Evariste Systems LLC
1170 Peachtree Street
12th Floor, Suite 1200
Atlanta, GA 30309
Tel: +1-678-954-0670
Fax: +1-404-961-1892
Web:
http://www.evaristesys.com/