Module: kamailio
Branch: master
Commit: 33b2e513aefe00bf166cdcae360e305615b223da
URL:
https://github.com/kamailio/kamailio/commit/33b2e513aefe00bf166cdcae360e305…
Author: Daniel-Constantin Mierla <miconda(a)gmail.com>
Committer: Daniel-Constantin Mierla <miconda(a)gmail.com>
Date: 2024-01-23T21:05:41+01:00
tm: release transaction on kill if a final response was sent
- do not send another final response for error cases
---
Modified: src/modules/tm/t_funcs.c
---
Diff:
https://github.com/kamailio/kamailio/commit/33b2e513aefe00bf166cdcae360e305…
Patch:
https://github.com/kamailio/kamailio/commit/33b2e513aefe00bf166cdcae360e305…
---
diff --git a/src/modules/tm/t_funcs.c b/src/modules/tm/t_funcs.c
index b9f9949d0fb..5515a4aba6f 100644
--- a/src/modules/tm/t_funcs.c
+++ b/src/modules/tm/t_funcs.c
@@ -177,6 +177,11 @@ int kill_transaction(struct cell *trans, int error)
int reply_ret;
int ret;
+ if((trans->uas.request != NULL)
+ && (trans->uas.request->msg_flags & FL_FINAL_REPLY)) {
+ return t_release_transaction(trans);
+ }
+
/* we reply statefully and enter WAIT state since error might
have occurred in middle of forking and we do not
want to put the forking burden on upstream client;
@@ -205,6 +210,11 @@ int kill_transaction_unsafe(struct cell *trans, int error)
int reply_ret;
int ret;
+ if((trans->uas.request != NULL)
+ && (trans->uas.request->msg_flags & FL_FINAL_REPLY)) {
+ return t_release_transaction(trans);
+ }
+
/* we reply statefully and enter WAIT state since error might
have occurred in middle of forking and we do not
want to put the forking burden on upstream client;