I have a
setup where kamailio acts as UAC to a SIP provider.
Kamailio is
also configured to pass all incoming calls to an Asterisk.
Phone<-->Asterisk(10.10.11.232)<--->(PRIV:10.10.11.238)Kamailio(PUB:44.44.44.148)<--->(194.213.29.92)SIP-provider.
When a call
comes in from the SIP-provider, it gets all the way to the
phone.
But when the
SIP-provider sends BYE or ACK (during hungup event or
200OK/SDP asterisk response.).
siputils [checks.c:100]:
has_totag(): totag found
<core>
[parser/parse_rr.c:49]: do_parse_rr_body():
parse_rr_body(): No body for record-route
rr [loose.c:106]:
find_first_route(): failed to parse Route HF
rr [loose.c:929]: loose_route():
There is no Route HF
tm [t_lookup.c:648]:
t_lookup_request(): DEBUG: t_lookup_request: no
transaction found
tm [t_lookup.c:1011]:
t_check_msg(): DEBUG: t_check_msg: msg id=1 global id=0 T
start=0xffffffffffffffff
tm [t_lookup.c:466]:
t_lookup_request(): t_lookup_request: start searching:
hash=10101, isACK=1
tm [t_lookup.c:424]:
matching_3261(): DEBUG: RFC3261 transaction matching
failed
.....
....
....
siputils [checks.c:100]:
has_totag(): totag found
tm [t_lookup.c:1312]: t_newtran():
DEBUG: t_newtran: msg id=2 , global msg id=1 , T on
entrance=0xffffffffffffffff
tm [t_lookup.c:466]:
t_lookup_request(): t_lookup_request: start searching:
hash=10101, isACK=1
tm [t_lookup.c:424]:
matching_3261(): DEBUG: RFC3261 transaction matching failed
tm [t_lookup.c:648]:
t_lookup_request(): DEBUG: t_lookup_request: no transaction
found
tm [t_funcs.c:279]: t_relay_to():
SER: forwarding ACK statelessly
Looking at the SIP ACK that comes
from SIP provider I can see that they use strict routing.
(i.e. TO field is set to kamailio's
public IP that is next hop to them).
Maybe I am wrong to judge that its
not loose routing just because of the TO field.
Anyways, because of (failed to
parse Route HF) error, ACKs and BYEs are forwarded by
kamailio statelessly, as a result kamailio uses wrong
interface to forward them (SIP_dailog.txt line:233) and
therefore asterisk never sees ACKs or BYEs.
How can I make kamailio recognize
ACKs and BYEs belonging to a dialog and pass them statefully
through the right interface?
It is worth to mention that I use
exactly the same config with a different SIP-provider (which
is peered to our PUB IP not registered through UAC like in
this case) and it works flawlessly.
Thank you,
Mir