Hi,
I'm using t_reply if onreply_route as follow:
route {
...
t_on_reply("ERROR");
...
t_relay();
}
onreply_route[ERROR] {
t_reply("500", "Error");
}
I have this call flow:
CLIENT KAMAILIO CARRIER
|--- INVITE ---> |
|---- INVITE --->|
|<---- 100 ------|
|<--- 100 --------|
|<---- 503 ------|
|---- ACK ------>|
|<--- 500 --------|
|---- ACK ------->|
|---- CANCEL --->|
|<--- 487 -------|
Kamailio sends a CANCEL message to a branch terminated by the carrier.
I'm not sure it is the good way to fix this issue (espacially in use cases involving
multiple branches) but here is a patch that work for me on current master:
diff --git a/modules/tm/t_reply.c b/modules/tm/t_reply.c
index b2e6e53..4b9e142 100644
--- a/modules/tm/t_reply.c
+++ b/modules/tm/t_reply.c
@@ -571,7 +571,7 @@ static int _reply_light( struct cell *trans, char* buf, unsigned
int len,
}
}
cleanup_uac_timers( trans );
- if (is_invite(trans)){
+ if (is_invite(trans && get_route_type() !=
TM_ONREPLY_ROUTE)){
prepare_to_cancel(trans, &cancel_data.cancel_bitmap, 0);
#ifdef CANCEL_REASON_SUPPORT
cancel_data.reason.cause=code;
---
Reply to this email directly or view it on GitHub:
https://github.com/kamailio/kamailio/issues/315