Module: kamailio Branch: 4.4 Commit: fc4cfe984ef160db96e206c45610b05fe32aa455 URL: https://github.com/kamailio/kamailio/commit/fc4cfe984ef160db96e206c45610b05f...
Author: Daniel-Constantin Mierla miconda@gmail.com Committer: Daniel-Constantin Mierla miconda@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/fc4cfe984ef160db96e206c45610b05f... Patch: https://github.com/kamailio/kamailio/commit/fc4cfe984ef160db96e206c45610b05f...
---
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)