mirror of https://github.com/sipwise/kamailio.git
parent
d1893f3fd8
commit
e69d58872c
@ -0,0 +1,30 @@
|
||||
From eaeb74f5b6af5be13f88de93729998f13e9a06b7 Mon Sep 17 00:00:00 2001
|
||||
From: Daniel-Constantin Mierla <miconda@gmail.com>
|
||||
Date: Wed, 11 Dec 2013 09:49:52 +0100
|
||||
Subject: [PATCH] core: safety check for double free in q_malloc as in f_malloc
|
||||
|
||||
(cherry picked from commit 943a5941f5ab479803fb30e19e9fa607f0f0fe14)
|
||||
---
|
||||
mem/q_malloc.c | 6 ++++++
|
||||
1 file changed, 6 insertions(+)
|
||||
|
||||
diff --git a/mem/q_malloc.c b/mem/q_malloc.c
|
||||
index 50acab9..8c36d03 100644
|
||||
--- a/mem/q_malloc.c
|
||||
+++ b/mem/q_malloc.c
|
||||
@@ -473,6 +473,12 @@ void qm_free(struct qm_block* qm, void* p)
|
||||
MDBG("qm_free: freeing frag. %p alloc'ed from %s: %s(%ld)\n",
|
||||
f, f->file, f->func, f->line);
|
||||
#endif
|
||||
+ if (unlikely(f->u.is_free)){
|
||||
+ LM_INFO("freeing a free fragment (%p/%p) - ignore\n",
|
||||
+ f, p);
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
size=f->size;
|
||||
qm->used-=size;
|
||||
qm->real_used-=size;
|
||||
--
|
||||
1.8.5.2
|
||||
|
||||
@ -0,0 +1,36 @@
|
||||
From e96a8b80fd253777e1d001ad778c5a62473ba010 Mon Sep 17 00:00:00 2001
|
||||
From: Daniel-Constantin Mierla <miconda@gmail.com>
|
||||
Date: Wed, 11 Dec 2013 23:01:41 +0100
|
||||
Subject: [PATCH] avpops: create a local pv structure when parameter is only
|
||||
flags
|
||||
|
||||
- flags details are stored inside it
|
||||
- fixes crash at startup reported by Kevin Scott Adams, FS#381
|
||||
|
||||
(cherry picked from commit 3c88f1de9d647db8a14bae45af1fa3b34f74d4e6)
|
||||
---
|
||||
modules/avpops/avpops_parse.c | 8 ++++++++
|
||||
1 file changed, 8 insertions(+)
|
||||
|
||||
diff --git a/modules/avpops/avpops_parse.c b/modules/avpops/avpops_parse.c
|
||||
index 3a16f18..3a6c5ec 100644
|
||||
--- a/modules/avpops/avpops_parse.c
|
||||
+++ b/modules/avpops/avpops_parse.c
|
||||
@@ -129,6 +129,14 @@ int parse_avp_db(char *s, struct db_param *dbp, int allow_scheme)
|
||||
goto error;
|
||||
}
|
||||
}
|
||||
+ /* no pv to lookup, create one to store flags details */
|
||||
+ dbp->a.u.sval = (pv_spec_t*)pkg_malloc(sizeof(pv_spec_t));
|
||||
+ if(dbp->a.u.sval==NULL)
|
||||
+ {
|
||||
+ LM_ERR("no more pkg\n");
|
||||
+ goto error;
|
||||
+ }
|
||||
+ memset(dbp->a.u.sval, 0, sizeof(pv_spec_t));
|
||||
dbp->a.u.sval->pvp.pvn.u.isname.type |= (flags<<8)&0xff00;
|
||||
dbp->a.type = AVPOPS_VAL_NONE;
|
||||
} else {
|
||||
--
|
||||
1.8.5.2
|
||||
|
||||
@ -0,0 +1,74 @@
|
||||
From 5b869a7c1c584f2762610c5310e7281375c8103d Mon Sep 17 00:00:00 2001
|
||||
From: Daniel-Constantin Mierla <miconda@gmail.com>
|
||||
Date: Wed, 11 Dec 2013 23:58:11 +0100
|
||||
Subject: [PATCH] tm: reset temporary linking of reply to transaction after
|
||||
branch failure route execution
|
||||
|
||||
- reported by Robert Boisvert, FS#379
|
||||
|
||||
(cherry picked from commit 0ebc983a422cd5ee4baa39bb3ef3bdbeeefd4571)
|
||||
---
|
||||
modules/tm/t_reply.c | 13 +++++++------
|
||||
1 file changed, 7 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/modules/tm/t_reply.c b/modules/tm/t_reply.c
|
||||
index 562b583..4d9901d 100644
|
||||
--- a/modules/tm/t_reply.c
|
||||
+++ b/modules/tm/t_reply.c
|
||||
@@ -1093,7 +1093,7 @@ int run_branch_failure_handlers(struct cell *t, struct sip_msg *rpl,
|
||||
|
||||
/* failure_route for a local UAC? */
|
||||
if (!shmem_msg) {
|
||||
- LOG(L_WARN,"Warning: run_branch_failure_handlers: no UAC support (%d, %d) \n",
|
||||
+ LOG(L_WARN,"no UAC support (%d, %d) \n",
|
||||
on_branch_failure, t->tmcb_hl.reg_types);
|
||||
return 0;
|
||||
}
|
||||
@@ -1101,13 +1101,13 @@ int run_branch_failure_handlers(struct cell *t, struct sip_msg *rpl,
|
||||
/* don't start faking anything if we don't have to */
|
||||
if (unlikely((on_branch_failure < 0) && !has_tran_tmcbs( t, TMCB_ON_BRANCH_FAILURE))) {
|
||||
LOG(L_WARN,
|
||||
- "Warning: run_failure_handlers: no branch_failure handler (%d, %d)\n",
|
||||
+ "no branch_failure handler (%d, %d)\n",
|
||||
on_branch_failure, t->tmcb_hl.reg_types);
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (!fake_req(&faked_req, shmem_msg, extra_flags, &t->uac[picked_branch])) {
|
||||
- LOG(L_ERR, "ERROR: run_branch_failure_handlers: fake_req failed\n");
|
||||
+ LOG(L_ERR, "fake_req failed\n");
|
||||
return 0;
|
||||
}
|
||||
/* fake also the env. conforming to the fake msg */
|
||||
@@ -1124,7 +1124,7 @@ int run_branch_failure_handlers(struct cell *t, struct sip_msg *rpl,
|
||||
if (exec_pre_script_cb(&faked_req, BRANCH_FAILURE_CB_TYPE)>0) {
|
||||
/* run a branch_failure_route action if some was marked */
|
||||
if (run_top_route(event_rt.rlist[on_branch_failure], &faked_req, 0)<0)
|
||||
- LOG(L_ERR, "ERROR: run_branch_failure_handlers: Error in run_top_route\n");
|
||||
+ LOG(L_ERR, "error in run_top_route\n");
|
||||
exec_post_script_cb(&faked_req, BRANCH_FAILURE_CB_TYPE);
|
||||
}
|
||||
/* update message flags, if changed in branch_failure route */
|
||||
@@ -1357,9 +1357,9 @@ static enum rps t_should_relay_response( struct cell *Trans , int new_code,
|
||||
/* also append the current reply to the transaction to
|
||||
* make it available in failure routes - a kind of "fake"
|
||||
* save of the final reply per branch */
|
||||
- Trans->uac[branch].reply = reply;
|
||||
if (unlikely(has_tran_tmcbs( Trans, TMCB_ON_BRANCH_FAILURE_RO|TMCB_ON_BRANCH_FAILURE)
|
||||
- || (Trans->uac[picked_branch].on_branch_failure) )) {
|
||||
+ || (Trans->uac[branch].on_branch_failure) )) {
|
||||
+ Trans->uac[branch].reply = reply;
|
||||
extra_flags=
|
||||
((Trans->uac[branch].request.flags & F_RB_TIMEOUT)?
|
||||
FL_TIMEOUT:0) |
|
||||
@@ -1369,6 +1369,7 @@ static enum rps t_should_relay_response( struct cell *Trans , int new_code,
|
||||
picked_branch = branch;
|
||||
run_branch_failure_handlers( Trans, Trans->uac[branch].reply,
|
||||
new_code, extra_flags);
|
||||
+ Trans->uac[branch].reply = 0;
|
||||
}
|
||||
|
||||
|
||||
--
|
||||
1.8.5.2
|
||||
|
||||
@ -0,0 +1,45 @@
|
||||
From 98ecf7d2c5753357fd2c1d1e8e72f425e4d48f9b Mon Sep 17 00:00:00 2001
|
||||
From: Daniel-Constantin Mierla <miconda@gmail.com>
|
||||
Date: Thu, 12 Dec 2013 15:50:27 +0100
|
||||
Subject: [PATCH] snmpstats: fixe MIB file definitions
|
||||
|
||||
- patch by takeshi, FS#363
|
||||
|
||||
(cherry picked from commit ab75785aa707f10fdbccfb0531a0f35e820f5ebc)
|
||||
---
|
||||
modules/snmpstats/mibs/KAMAILIO-TC | 7 +++----
|
||||
1 file changed, 3 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/modules/snmpstats/mibs/KAMAILIO-TC b/modules/snmpstats/mibs/KAMAILIO-TC
|
||||
index 81d1459..171c491 100644
|
||||
--- a/modules/snmpstats/mibs/KAMAILIO-TC
|
||||
+++ b/modules/snmpstats/mibs/KAMAILIO-TC
|
||||
@@ -62,7 +62,7 @@ KamailioSIPTransportProtocol ::= TEXTUAL-CONVENTION
|
||||
tcp(2),
|
||||
sctp(3),
|
||||
tls(4),
|
||||
- sctp_tls(5),
|
||||
+ sctptls(5),
|
||||
ws(6),
|
||||
wss(7)
|
||||
}
|
||||
@@ -79,14 +79,13 @@ KamailioSIPEntityRole ::= TEXTUAL-CONVENTION
|
||||
operation of a SIP outbound edge proxy node.
|
||||
Kamailio adds the role 'sipcaptureServer' for
|
||||
operation of a Homer SIPcapture node."
|
||||
- "
|
||||
SYNTAX BITS {
|
||||
other(0),
|
||||
userAgent(1),
|
||||
proxyServer(2),
|
||||
redirectServer(3),
|
||||
- registrarServer(4)
|
||||
- edgeproxyServer(5)
|
||||
+ registrarServer(4),
|
||||
+ edgeproxyServer(5),
|
||||
sipcaptureServer(6)
|
||||
}
|
||||
|
||||
--
|
||||
1.8.5.2
|
||||
|
||||
@ -0,0 +1,37 @@
|
||||
From d75bc3b69151a9d0391309e6bb51784f3b6b9a83 Mon Sep 17 00:00:00 2001
|
||||
From: Daniel-Constantin Mierla <miconda@gmail.com>
|
||||
Date: Mon, 16 Dec 2013 09:26:03 +0100
|
||||
Subject: [PATCH] db_flatstore: update timestamp for kamailio specific rpc
|
||||
rotate
|
||||
|
||||
- do also in 'rotate' command, not only in 'k_rotate'
|
||||
- from a patch by Abdelkader Allam
|
||||
|
||||
(cherry picked from commit b15aefa31e45f1ad6a45b64905f9fae24e0f790e)
|
||||
---
|
||||
modules/db_flatstore/flat_rpc.c | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
diff --git a/modules/db_flatstore/flat_rpc.c b/modules/db_flatstore/flat_rpc.c
|
||||
index 2fe0d0f..5145d83 100644
|
||||
--- a/modules/db_flatstore/flat_rpc.c
|
||||
+++ b/modules/db_flatstore/flat_rpc.c
|
||||
@@ -32,6 +32,7 @@
|
||||
|
||||
#include "flat_rpc.h"
|
||||
#include "flatstore_mod.h"
|
||||
+#include "km_flatstore_mod.h"
|
||||
|
||||
#include <time.h>
|
||||
|
||||
@@ -43,6 +44,7 @@
|
||||
*/
|
||||
static void rotate(rpc_t* rpc, void* c)
|
||||
{
|
||||
+ *km_flat_rotate = time(0);
|
||||
*flat_rotate = time(0);
|
||||
}
|
||||
|
||||
--
|
||||
1.8.5.2
|
||||
|
||||
@ -0,0 +1,45 @@
|
||||
From 9e8c3f90e9467153b1e63a257ccdfb09adc4ecfd Mon Sep 17 00:00:00 2001
|
||||
From: Juha Heinanen <jh@tutpro.com>
|
||||
Date: Thu, 19 Dec 2013 16:21:25 +0200
|
||||
Subject: [PATCH] modules/pv: fixed params and param transformation
|
||||
|
||||
- params need to be taken from sip_params field of sip_uri struct
|
||||
(cherry picked from commit e54b3ec673cb32664a1e8de2e591190f22216724)
|
||||
---
|
||||
modules/pv/pv_trans.c | 6 +++---
|
||||
1 file changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/modules/pv/pv_trans.c b/modules/pv/pv_trans.c
|
||||
index 738efca..7c75deb 100644
|
||||
--- a/modules/pv/pv_trans.c
|
||||
+++ b/modules/pv/pv_trans.c
|
||||
@@ -1025,7 +1025,7 @@ int tr_eval_uri(struct sip_msg *msg, tr_param_t *tp, int subtype,
|
||||
val->ri = _tr_parsed_uri.port_no;
|
||||
break;
|
||||
case TR_URI_PARAMS:
|
||||
- val->rs = (_tr_parsed_uri.params.s)?_tr_parsed_uri.params:_tr_empty;
|
||||
+ val->rs = (_tr_parsed_uri.sip_params.s)?_tr_parsed_uri.sip_params:_tr_empty;
|
||||
break;
|
||||
case TR_URI_PARAM:
|
||||
if(tp==NULL)
|
||||
@@ -1033,7 +1033,7 @@ int tr_eval_uri(struct sip_msg *msg, tr_param_t *tp, int subtype,
|
||||
LM_ERR("param invalid parameters\n");
|
||||
return -1;
|
||||
}
|
||||
- if(_tr_parsed_uri.params.len<=0)
|
||||
+ if(_tr_parsed_uri.sip_params.len<=0)
|
||||
{
|
||||
val->rs = _tr_empty;
|
||||
val->flags = PV_VAL_STR;
|
||||
@@ -1043,7 +1043,7 @@ int tr_eval_uri(struct sip_msg *msg, tr_param_t *tp, int subtype,
|
||||
|
||||
if(_tr_uri_params == NULL)
|
||||
{
|
||||
- sv = _tr_parsed_uri.params;
|
||||
+ sv = _tr_parsed_uri.sip_params;
|
||||
if (parse_params(&sv, CLASS_ANY, &phooks, &_tr_uri_params)<0)
|
||||
return -1;
|
||||
}
|
||||
--
|
||||
1.8.5.2
|
||||
|
||||
@ -0,0 +1,58 @@
|
||||
From a4060da5e1fe1e64c224ff32d669a699a0d5cd1d Mon Sep 17 00:00:00 2001
|
||||
From: Juha Heinanen <jh@tutpro.com>
|
||||
Date: Thu, 26 Dec 2013 17:51:04 +0200
|
||||
Subject: [PATCH] modules/pua: added some missing lock releases (cherry picked
|
||||
from commit 4eb338611e716e7a32f252acbae52bace6047a0a)
|
||||
|
||||
---
|
||||
modules/pua/send_subscribe.c | 12 +++++++++++-
|
||||
1 file changed, 11 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/modules/pua/send_subscribe.c b/modules/pua/send_subscribe.c
|
||||
index 006bae4..d568ff2 100644
|
||||
--- a/modules/pua/send_subscribe.c
|
||||
+++ b/modules/pua/send_subscribe.c
|
||||
@@ -1030,8 +1030,12 @@ int send_subscribe(subs_info_t* subs)
|
||||
insert:
|
||||
|
||||
if (subs->expires == 0)
|
||||
+ {
|
||||
/* Don't create a new dialog when expires == 0 */
|
||||
- goto done;
|
||||
+ if (dbmode != PUA_DB_ONLY)
|
||||
+ lock_release(&HashT->p_records[hash_code].lock);
|
||||
+ goto done;
|
||||
+ }
|
||||
|
||||
if(subs->flag & UPDATE_TYPE)
|
||||
{
|
||||
@@ -1044,6 +1048,8 @@ insert:
|
||||
{
|
||||
LM_ERR("while building callback"
|
||||
" param\n");
|
||||
+ if (dbmode != PUA_DB_ONLY)
|
||||
+ lock_release(&HashT->p_records[hash_code].lock);
|
||||
goto error;
|
||||
}
|
||||
hentity->flag= flag;
|
||||
@@ -1068,6 +1074,8 @@ insert:
|
||||
uac_r.dialog = 0;
|
||||
}
|
||||
shm_free(hentity);
|
||||
+ if (dbmode != PUA_DB_ONLY)
|
||||
+ lock_release(&HashT->p_records[hash_code].lock);
|
||||
|
||||
/* Although this is an error must not return -1 as the
|
||||
calling function must continue processing. */
|
||||
@@ -1089,6 +1097,8 @@ insert:
|
||||
if(presentity== NULL)
|
||||
{
|
||||
LM_ERR("no more share memory\n");
|
||||
+ if (dbmode != PUA_DB_ONLY)
|
||||
+ lock_release(&HashT->p_records[hash_code].lock);
|
||||
goto error;
|
||||
}
|
||||
memset(presentity, 0, size);
|
||||
--
|
||||
1.8.5.2
|
||||
|
||||
Loading…
Reference in new issue