TT#35352 Fix cfgt module in case of return from onsend_route

Change-Id: I9621bf7fa215087afd3e1b67b0d0746256839b2d
changes/04/21304/4
Marco Capetta 8 years ago
parent a3b1703991
commit 5e852cbcd1

@ -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

@ -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;
Loading…
Cancel
Save