From 5e852cbcd1ce342ea6422677606720504eb89595 Mon Sep 17 00:00:00 2001 From: Marco Capetta Date: Mon, 21 May 2018 10:15:49 +0200 Subject: [PATCH] TT#35352 Fix cfgt module in case of return from onsend_route Change-Id: I9621bf7fa215087afd3e1b67b0d0746256839b2d --- debian/patches/series | 1 + debian/patches/sipwise/cfgt_onsend_exit.patch | 53 +++++++++++++++++++ 2 files changed, 54 insertions(+) create mode 100644 debian/patches/sipwise/cfgt_onsend_exit.patch diff --git a/debian/patches/series b/debian/patches/series index 8d245bfcb..7201694cc 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -17,6 +17,7 @@ sipwise/usrloc_dbro_pinger.patch sipwise/rtpengine_next_branch_parm.patch sipwise/cfgt_debug.patch sipwise/cfgt_folder_fix.patch +sipwise/cfgt_onsend_exit.patch sipwise/pv_trans_eval_uri.patch ## SCA Patches sipwise/sca-line-seize.patch diff --git a/debian/patches/sipwise/cfgt_onsend_exit.patch b/debian/patches/sipwise/cfgt_onsend_exit.patch new file mode 100644 index 000000000..22f1114e7 --- /dev/null +++ b/debian/patches/sipwise/cfgt_onsend_exit.patch @@ -0,0 +1,53 @@ +--- a/src/modules/cfgt/cfgt_int.c ++++ b/src/modules/cfgt/cfgt_int.c +@@ -477,9 +477,13 @@ int _cfgt_add_routename(cfgt_node_p node + } else { + LM_DBG("actual routename:[%.*s][%d]\n", node->route->s.len, + node->route->s.s, node->route->type); +- if(node->route->prev) ++ if(node->route->prev) { ++ if(node->route->prev->prev) ++ LM_DBG("prev prev routename:[%.*s][%d]\n", node->route->prev->prev->s.len, ++ node->route->prev->prev->s.s, node->route->prev->prev->type); + LM_DBG("prev routename:[%.*s][%d]\n", node->route->prev->s.len, + node->route->prev->s.s, node->route->prev->type); ++ } + if(node->route->next) + LM_DBG("next routename:[%.*s][%d]\n", node->route->next->s.len, + node->route->next->s.s, node->route->next->type); +@@ -487,12 +491,19 @@ int _cfgt_add_routename(cfgt_node_p node + LM_DBG("same route\n"); + _cfgt_set_type(node->route, a); + return 2; +- } else if(node->route->prev +- && STR_EQ(*routename, node->route->prev->s)) { +- LM_DBG("back to route[%.*s]\n", node->route->prev->s.len, +- node->route->prev->s.s); +- _cfgt_set_type(node->route->prev, a); +- return 3; ++ } else if(node->route->prev) { ++ if STR_EQ(*routename, node->route->prev->s) { ++ LM_DBG("back to prev route[%.*s]\n", node->route->prev->s.len, ++ node->route->prev->s.s); ++ _cfgt_set_type(node->route->prev, a); ++ return 3; ++ } else if(node->route->prev->prev ++ && STR_EQ(*routename, node->route->prev->prev->s)) { ++ LM_DBG("back to prev prev route[%.*s]\n", node->route->prev->prev->s.len, ++ node->route->prev->prev->s.s); ++ _cfgt_set_type(node->route->prev->prev, a); ++ return 3; ++ } + } + route = pkg_malloc(sizeof(cfgt_str_list_t)); + if(!route) { +@@ -500,6 +511,9 @@ int _cfgt_add_routename(cfgt_node_p node + return -1; + } + memset(route, 0, sizeof(cfgt_str_list_t)); ++ if(route->prev && node->route->prev) { ++ route->prev->prev = node->route->prev; ++ } + route->prev = node->route; + node->route->next = route; + node->route = route;