Module: kamailio
Branch: 4.4
Commit: fc4cfe984ef160db96e206c45610b05fe32aa455
URL: 
https://github.com/kamailio/kamailio/commit/fc4cfe984ef160db96e206c45610b05fe32aa455

Author: Daniel-Constantin Mierla <mico...@gmail.com>
Committer: Daniel-Constantin Mierla <mico...@gmail.com>
Date: 2017-03-21T13:19:30+01:00

siptrace: avoid creating proxy structure twice in trace_send_duplicate()

- can happen when dst parameter is given, resulting in mem leak
- related to GH #1040

(cherry picked from commit 8cd0f0be8bda6a903eab8c0ef610cb00b8ba8359)
(cherry picked from commit 97c6e811814e85b9845993a6b41994f70c57d2c4)

---

Modified: modules/siptrace/siptrace.c

---

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

---

diff --git a/modules/siptrace/siptrace.c b/modules/siptrace/siptrace.c
index 4594e25..29bd60d 100644
--- a/modules/siptrace/siptrace.c
+++ b/modules/siptrace/siptrace.c
@@ -1594,19 +1594,9 @@ static int trace_send_duplicate(char *buf, int len, 
struct dest_info *dst2)
                return 0;
 
        init_dest_info(&dst);
-       /* create a temporary proxy*/
-       dst.proto = PROTO_UDP;
-       p=mk_proxy(&dup_uri->host, (dup_uri->port_no)?dup_uri->port_no:SIP_PORT,
-                       dst.proto);
-       if (p==0)
-       {
-               LM_ERR("bad host name in uri\n");
-               return -1;
-       }
 
        if (!dst2){
-               init_dest_info(&dst);
-               /* create a temporary proxy*/
+               /* create a temporary proxy from dst param */
                dst.proto = PROTO_UDP;
                p=mk_proxy(&dup_uri->host, 
(dup_uri->port_no)?dup_uri->port_no:SIP_PORT,
                                dst.proto);
@@ -1622,6 +1612,16 @@ static int trace_send_duplicate(char *buf, int len, 
struct dest_info *dst2)
                                        " listening socket\n", 
dst.to.s.sa_family, dst.proto);
                        goto error;
                }
+       } else {
+               /* create a temporary proxy to dup uri */
+               dst.proto = PROTO_UDP;
+               p=mk_proxy(&dup_uri->host, 
(dup_uri->port_no)?dup_uri->port_no:SIP_PORT,
+                               dst.proto);
+               if (p==0)
+               {
+                       LM_ERR("bad host name in uri\n");
+                       return -1;
+               }
        }
 
        if (msg_send((dst2)?dst2:&dst, buf, len)<0)


_______________________________________________
sr-dev mailing list
sr-dev@lists.sip-router.org
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev

Reply via email to