Module: kamailio
Branch: master
Commit: 4e9a760123cb966349886254031f6d1dcb361525
URL: 
https://github.com/kamailio/kamailio/commit/4e9a760123cb966349886254031f6d1dcb361525

Author: Daniel-Constantin Mierla <[email protected]>
Committer: Daniel-Constantin Mierla <[email protected]>
Date: 2019-05-09T11:37:22+02:00

siptrace: allow again siptrace without duplication uri

- reported by Juha Heinanen

---

Modified: src/modules/siptrace/siptrace.c

---

Diff:  
https://github.com/kamailio/kamailio/commit/4e9a760123cb966349886254031f6d1dcb361525.diff
Patch: 
https://github.com/kamailio/kamailio/commit/4e9a760123cb966349886254031f6d1dcb361525.patch

---

diff --git a/src/modules/siptrace/siptrace.c b/src/modules/siptrace/siptrace.c
index e559d7874a..fc97290285 100644
--- a/src/modules/siptrace/siptrace.c
+++ b/src/modules/siptrace/siptrace.c
@@ -526,6 +526,8 @@ static inline str *siptrace_get_table(void)
 static int sip_trace_store(siptrace_data_t *sto, dest_info_t *dst,
                str *correlation_id_str)
 {
+       int ret = 1;
+
        if(sto == NULL) {
                LM_DBG("invalid parameter\n");
                return -1;
@@ -535,16 +537,20 @@ static int sip_trace_store(siptrace_data_t *sto, 
dest_info_t *dst,
 
        if(sip_trace_xheaders_read(sto) != 0)
                return -1;
-       int ret = sip_trace_store_db(sto);
+
+       ret = sip_trace_store_db(sto);
 
        if(sip_trace_xheaders_write(sto) != 0)
                return -1;
 
-       if(hep_mode_on)
+       if(hep_mode_on) {
                trace_send_hep_duplicate(
                                &sto->body, &sto->fromip, &sto->toip, dst, 
correlation_id_str);
-       else
-               trace_send_duplicate(sto->body.s, sto->body.len, dst);
+       } else {
+               if(dst) {
+                       trace_send_duplicate(sto->body.s, sto->body.len, dst);
+               }
+       }
 
        if(sip_trace_xheaders_free(sto) != 0)
                return -1;
@@ -901,21 +907,23 @@ static int w_sip_trace3(sip_msg_t *msg, char *dest, char 
*correlation_id, char *
                        LM_ERR("unable to parse the dest URI string\n");
                        return -1;
                }
-       }
 
-       if (dup_uri_param_str.s == 0 || (is_null_pv(dup_uri_param_str))) {
-               if (dup_uri_str.s == 0 || dup_uri_str.len == 0) {
-                       LM_ERR("no duplicate_uri modparam nor duplicate uri 
sip_trace() argument provided!\n");
-                       return -1;
-               }
+               if (dup_uri_param_str.s == 0 || 
(is_null_pv(dup_uri_param_str))) {
+                       if (dup_uri_str.s == 0 || dup_uri_str.len == 0) {
+                               LM_ERR("no duplicate_uri modparam nor duplicate 
uri sip_trace() argument provided!\n");
+                               return -1;
+                       }
 
-               dup_uri_param_str = dup_uri_str;
-       }
+                       dup_uri_param_str = dup_uri_str;
+               }
 
-       /* if arg dest uri is null  dup_uri_param_str will have length 0 and 
global dup_uri will be used */
-       if (parse_siptrace_uri(&dup_uri_param_str, &dest_info) < 0) {
-               LM_ERR("failed to parse uri!\n");
-               return -1;
+               /* if arg dest uri is null  dup_uri_param_str will have length 
0 and global dup_uri will be used */
+               if (parse_siptrace_uri(&dup_uri_param_str, &dest_info) < 0) {
+                       LM_ERR("failed to parse uri!\n");
+                       return -1;
+               }
+       } else {
+               memset(&dest_info, 0, sizeof(dest_info_t));
        }
 
        if (correlation_id) {
@@ -1009,7 +1017,7 @@ static int w_sip_trace3(sip_msg_t *msg, char *dest, char 
*correlation_id, char *
        }
 
 trace_current:
-       return sip_trace(msg, &dest_info, &correlation_id_str, NULL);
+       return sip_trace(msg, ((dest)?&dest_info:NULL), &correlation_id_str, 
NULL);
 }
 
 static int sip_trace(sip_msg_t *msg, dest_info_t *dst,


_______________________________________________
Kamailio (SER) - Development Mailing List
[email protected]
https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-dev

Reply via email to