TT#71552 [cfgt] refresh already merged patches

* fix sipwise/fix_error_in_cfgt_module.patch:
  not_sip needs to be reset for sip messages after non_sip detection
* reorder some patches to avoid confusion
* Let's try to keep the descriptions for patches in order to be
  able to track them easily

Change-Id: I11ea589387696f10d2f86b4e65b0dee85175ffbb
changes/99/35799/4
Victor Seva 6 years ago
parent 184ec37472
commit fbf34ab287

@ -1,4 +1,3 @@
## Package related
debian/no_lib64_on_64_bits.patch
debian/no_INSTALL_file.patch
@ -8,16 +7,15 @@ sipwise/parallel_build.patch
## New Modules
sipwise/add_pcem_module.patch
sipwise/add_lcr_rate_module.patch
sipwise/fix_lcr_rate_wrong_id.patch
sipwise/add_tcap_module.patch
sipwise/add_presence_dfks_module.patch
sipwise/presence_dfks_null_ptr_fixes.patch
sipwise/add_pv_headers_module.patch
## General Patches
sipwise/usrloc_dbro.patch
sipwise/usrloc_dbro_pinger.patch
sipwise/rtpengine_next_branch_parm.patch
sipwise/cfgt_folder_fix.patch
sipwise/cfgt_onsend_exit.patch
sipwise/fix_error_in_cfgt_module.patch
sipwise/pv_trans_eval_uri.patch
sipwise/avpops_avp_subst_pvar.patch
sipwise/fix_dialplan_errors.patch
@ -30,6 +28,7 @@ sipwise/sca-fix-pickup-when-upstream-flow.patch
sipwise/sca-fix-on-hold-detection-when-upstream-flow.patch
sipwise/sca-debug.patch
sipwise/sca-fix-notify-after-bye.patch
sipwise/sca-fix-memleaks.patch
## Ongoing Patches
sipwise/rtpengine-balancing.patch
sipwise/openssl-locking.patch
@ -57,10 +56,11 @@ sipwise/db_redis_versioning.patch
sipwise/db_redis_master_keys.patch
sipwise/db_redis_master_sets.patch
sipwise/db_redis_fixes.patch
sipwise/sca-fix-memleaks.patch
sipwise/presence_dfks_null_ptr_fixes.patch
sipwise/rtpengine_play_dtmf.patch
sipwise/db_redis_eval_fix.patch
sipwise/switch_from_python2_to_python3.patch
upstream/tm-execute-TMCB_REQUEST_FWDED-cb-as-BRANCH_ROUTE-whe.patch
sipwise/fix_lcr_rate_wrong_id.patch
upstream/cfgt-don-t-try-to-create-dir-if-it-already-exists.patch
upstream/cfgt-fix-detection-of-jump-to-previous-previous-rout.patch
###
sipwise/fix_error_in_cfgt_module.patch

@ -1,3 +1,14 @@
From: Sipwise Development Team <support@sipwise.com>
Date: Fri, 29 Nov 2019 11:23:36 +0100
Subject: fix_error_in_cfgt_module
Change-Id: I5deab153a0c17117be1d2f4de8ca84f9134a5d00
---
src/modules/cfgt/cfgt_int.c | 101 ++++++++++++++++++++++++++++++++++++++++----
1 file changed, 93 insertions(+), 8 deletions(-)
diff --git a/src/modules/cfgt/cfgt_int.c b/src/modules/cfgt/cfgt_int.c
index 0e3bfec..971222f 100644
--- a/src/modules/cfgt/cfgt_int.c
+++ b/src/modules/cfgt/cfgt_int.c
@@ -29,6 +29,11 @@
@ -20,7 +31,7 @@
static int shm_str_hash_alloc(struct str_hash_table *ht, int size)
{
@@ -187,7 +193,7 @@ int _cfgt_get_hdr_helper(struct sip_msg
@@ -187,7 +193,7 @@ int _cfgt_get_hdr_helper(struct sip_msg *msg, str *res, int mode)
return STR_EQ(tmp, *res);
}
}
@ -29,7 +40,7 @@
}
int _cfgt_get_hdr(struct sip_msg *msg, str *res)
@@ -394,15 +400,21 @@ int _cfgt_set_dump(struct sip_msg *msg,
@@ -394,15 +400,21 @@ int _cfgt_set_dump(struct sip_msg *msg, cfgt_node_p node, str *flow)
if(node == NULL || flow == NULL)
return -1;
@ -51,23 +62,23 @@
f = srjson_CreateObject(&node->jdoc);
if(f == NULL) {
LM_ERR("cannot create json object\n");
@@ -545,6 +557,31 @@ int _cfgt_node_get_flowname(cfgt_str_lis
@@ -531,6 +543,31 @@ int _cfgt_node_get_flowname(cfgt_str_list_p route, int *indx, str *dest)
return 0;
}
+int _cfgt_parse_msg(sip_msg_t *msg)
+{
+ if (parse_msg(msg->buf, msg->len, msg)!=0) {
+ if (parse_msg(msg->buf, msg->len, msg) != 0) {
+ LM_ERR("outbuf buffer parsing failed!");
+ return 1;
+ }
+
+ if(msg->first_line.type==SIP_REQUEST) {
+ if(msg->first_line.type == SIP_REQUEST) {
+ if(!IS_SIP(msg)) {
+ LM_DBG("non sip request message\n");
+ return 1;
+ }
+ } else if(msg->first_line.type==SIP_REPLY) {
+ } else if(msg->first_line.type == SIP_REPLY) {
+ if(!IS_SIP_REPLY(msg)) {
+ LM_DBG("non sip reply message\n");
+ return 1;
@ -83,7 +94,7 @@
int cfgt_process_route(struct sip_msg *msg, struct action *a)
{
str routename;
@@ -560,6 +597,10 @@ int cfgt_process_route(struct sip_msg *m
@@ -546,6 +583,10 @@ int cfgt_process_route(struct sip_msg *msg, struct action *a)
return 0;
}
LM_DBG("route from action:[%s]\n", a->rname);
@ -94,7 +105,7 @@
routename.s = a->rname;
routename.len = strlen(a->rname);
switch(_cfgt_add_routename(_cfgt_node, a, &routename)) {
@@ -605,22 +646,33 @@ int cfgt_process_route(struct sip_msg *m
@@ -591,22 +632,35 @@ int cfgt_process_route(struct sip_msg *msg, struct action *a)
/*
TODO:
@ -115,9 +126,11 @@
+ memset(&msg, 0, sizeof(sip_msg_t));
+ msg.buf = buf->s;
+ msg.len = buf->len;
+ if(_cfgt_parse_msg(&msg)!=0) {
+ if(_cfgt_parse_msg(&msg) != 0) {
+ LM_DBG("set 'not_sip' flag\n");
+ not_sip = 1;
+ } else {
+ not_sip = 0;
+ }
+
if(_cfgt_node) {
@ -130,7 +143,7 @@
_cfgt_node = cfgt_create_node(NULL);
if(_cfgt_node) {
jobj = srjson_CreateStr(&_cfgt_node->jdoc, buf->s, buf->len);
@@ -638,14 +690,23 @@ int cfgt_msgin(sr_event_param_t *evp)
@@ -624,14 +678,23 @@ int cfgt_msgin(sr_event_param_t *evp)
int cfgt_pre(struct sip_msg *msg, unsigned int flags, void *bar)
{
str unknown = {"unknown", 7};
@ -158,7 +171,7 @@
pkg_str_dup(&_cfgt_node->uuid, &unknown);
}
return _cfgt_get_uuid_id(_cfgt_node);
@@ -675,7 +736,9 @@ int cfgt_post(struct sip_msg *msg, unsig
@@ -661,7 +724,9 @@ int cfgt_post(struct sip_msg *msg, unsigned int flags, void *bar)
if(_cfgt_node) {
LM_DBG("dump last flow\n");
@ -169,7 +182,7 @@
LM_ERR("cannot create flowname\n");
else
_cfgt_set_dump(msg, _cfgt_node, &flowname);
@@ -689,11 +752,22 @@ int cfgt_post(struct sip_msg *msg, unsig
@@ -675,11 +740,24 @@ int cfgt_post(struct sip_msg *msg, unsigned int flags, void *bar)
int cfgt_msgout(sr_event_param_t *evp)
{
srjson_t *jobj;
@ -184,21 +197,23 @@
+ memset(&msg, 0, sizeof(sip_msg_t));
+ msg.buf = buf->s;
+ msg.len = buf->len;
+ if(_cfgt_parse_msg(&msg)!=0) {
+ if(_cfgt_parse_msg(&msg) != 0) {
+ LM_DBG("set 'not_sip' flag\n");
+ not_sip = 1;
+ } else {
+ not_sip = 0;
+ }
+
if(_cfgt_node) {
jobj = srjson_CreateStr(&_cfgt_node->jdoc, buf->s, buf->len);
if(jobj == NULL) {
@@ -703,6 +777,13 @@ int cfgt_msgout(sr_event_param_t *evp)
@@ -689,6 +767,13 @@ int cfgt_msgout(sr_event_param_t *evp)
srjson_AddItemToArray(&_cfgt_node->jdoc, _cfgt_node->out, jobj);
return 0;
}
+
+ // Skip OPTION messages internally generated
+ if(buf->len>7 && strcasestr(buf->s, "OPTIONS")) {
+ if(buf->len > 7 && strcasestr(buf->s, "OPTIONS")) {
+ LM_DBG("OPTIONS message internally generated, skip it\n");
+ return 0;
+ }

@ -1,7 +1,14 @@
From: Victor Seva <linuxmaniac@torreviejawireless.org>
Date: Thu, 28 Nov 2019 14:28:14 +0100
Subject: [PATCH] cfgt: don't try to create dir if it already exists
(cherry picked from commit 6918a96cc61fa0b15e09db01bb02e9b9f8c78abf)
---
src/modules/cfgt/cfgt_int.c | 5 ++++-
src/modules/cfgt/cfgt_int.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/src/modules/cfgt/cfgt_int.c b/src/modules/cfgt/cfgt_int.c
index 1c5b938..0e3bfec 100644
--- a/src/modules/cfgt/cfgt_int.c
+++ b/src/modules/cfgt/cfgt_int.c
@@ -322,13 +322,16 @@ void cfgt_save_node(cfgt_node_p node)

@ -1,25 +1,46 @@
From 60aa0d9fd7b3a53154b10eedcd0c51d51c6e0035 Mon Sep 17 00:00:00 2001
From: Marco Capetta <mcapetta@sipwise.com>
Date: Fri, 29 Nov 2019 09:28:45 +0100
Subject: [PATCH] cfgt: fix detection of jump to previous-previous route
* this happends with onsend_route
(cherry picked from commit e0ed91acb88091caf285704689f72e48c5127ae4)
---
src/modules/cfgt/cfgt_int.c | 28 +++++++++++++++++++++-------
1 file changed, 21 insertions(+), 7 deletions(-)
src/modules/cfgt/cfgt_int.c | 33 +++++++++++++++++++++++++--------
1 file changed, 25 insertions(+), 8 deletions(-)
diff --git a/src/modules/cfgt/cfgt_int.c b/src/modules/cfgt/cfgt_int.c
index 0e3bfecb5..3e6f5b8c2 100644
--- a/src/modules/cfgt/cfgt_int.c
+++ b/src/modules/cfgt/cfgt_int.c
@@ -467,9 +467,13 @@ int _cfgt_add_routename(cfgt_node_p node
@@ -329,7 +329,7 @@ void cfgt_save_node(cfgt_node_p node)
}
dest.s[dir] = '\0';
LM_DBG("dir [%s]\n", dest.s);
- if (stat(dest.s, &sb) == 0 && S_ISDIR(sb.st_mode)) {
+ if(stat(dest.s, &sb) == 0 && S_ISDIR(sb.st_mode)) {
LM_DBG("dir [%s] already existing\n", dest.s);
} else if(mkdir(dest.s, S_IRWXO | S_IXGRP | S_IRWXU) < 0) {
LM_ERR("failed to make directory: %s\n", strerror(errno));
@@ -467,9 +467,15 @@ int _cfgt_add_routename(cfgt_node_p node, struct action *a, str *routename)
} 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 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);
@@ -477,12 +481,19 @@ int _cfgt_add_routename(cfgt_node_p node
@@ -477,12 +483,20 @@ int _cfgt_add_routename(cfgt_node_p node, struct action *a, str *routename)
LM_DBG("same route\n");
_cfgt_set_type(node->route, a);
return 2;
@ -30,14 +51,15 @@
- _cfgt_set_type(node->route->prev, a);
- return 3;
+ } else if(node->route->prev) {
+ if STR_EQ(*routename, node->route->prev->s) {
+ 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,
+ 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;
@ -45,7 +67,7 @@
}
route = pkg_malloc(sizeof(cfgt_str_list_t));
if(!route) {
@@ -490,6 +501,9 @@ int _cfgt_add_routename(cfgt_node_p node
@@ -490,6 +504,9 @@ int _cfgt_add_routename(cfgt_node_p node, struct action *a, str *routename)
return -1;
}
memset(route, 0, sizeof(cfgt_str_list_t));
@ -55,3 +77,6 @@
route->prev = node->route;
node->route->next = route;
node->route = route;
--
2.20.1
Loading…
Cancel
Save