[Pkg-voip-commits] [kamailio] 02/03: add upstream fixes from 4.4 branch since 4.4.2
Victor Seva
vseva at moszumanska.debian.org
Tue Jul 12 13:29:59 UTC 2016
This is an automated email from the git hooks/post-receive script.
vseva pushed a commit to branch master
in repository kamailio.
commit e1029574f79a59f85522ad16f246f120e036c6e3
Author: Victor Seva <vseva at debian.org>
Date: Tue Jul 12 14:12:18 2016 +0200
add upstream fixes from 4.4 branch since 4.4.2
---
debian/patches/series | 20 ++
.../patches/upstream/0001-dmq-Correct-README.patch | 28 ++
...0002-modules-readme-files-regenerated-dmq.patch | 25 ++
...in-docs-that-masking-callid-is-not-implem.patch | 30 ++
...-detect-DB-disconnection-with-generic-HY0.patch | 28 ++
.../upstream/0005-core-fix-Sun-Studio-build.patch | 214 ++++++++++++++
...ers-fix-return-statement-in-void-function.patch | 36 +++
...move-return-statement-from-void-functions.patch | 35 +++
...emove-return-statement-from-void-function.patch | 26 ++
.../0009-uid_avp_db-remove-GCC-specific-Wall.patch | 25 ++
...ure-cfg_block-structure-is-8-byte-aligned.patch | 28 ++
...11-modules-readme-files-regenerated-topos.patch | 26 ++
...st-fix-typo-on-evaluating-the-table-param.patch | 30 ++
...st-more-debug-info-when-failing-to-do-the.patch | 319 +++++++++++++++++++++
...st-fixed-copy-paste-typo-when-evaluating-.patch | 30 ++
...ix-spelling-errors-catched-by-lintian-688.patch | 26 ++
...ed-the-check-route-params-to-detect-prope.patch | 209 ++++++++++++++
...log-open-db-connection-from-rpc-processes.patch | 29 ++
...anch-uri-against-current-uri-when-decidin.patch | 29 ++
...nit-rtp-engine-sockets-array-after-alloca.patch | 59 ++++
...it-rtpproxy-sockets-array-after-allocatio.patch | 39 +++
21 files changed, 1291 insertions(+)
diff --git a/debian/patches/series b/debian/patches/series
index 9de40e1..35aa3b0 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,3 +1,23 @@
+upstream/0001-dmq-Correct-README.patch
+upstream/0002-modules-readme-files-regenerated-dmq.patch
+upstream/0003-topos-note-in-docs-that-masking-callid-is-not-implem.patch
+upstream/0004-db_unixodbc-detect-DB-disconnection-with-generic-HY0.patch
+upstream/0005-core-fix-Sun-Studio-build.patch
+upstream/0006-counters-fix-return-statement-in-void-function.patch
+upstream/0007-dialog-remove-return-statement-from-void-functions.patch
+upstream/0008-ctl-remove-return-statement-from-void-function.patch
+upstream/0009-uid_avp_db-remove-GCC-specific-Wall.patch
+upstream/0010-core-ensure-cfg_block-structure-is-8-byte-aligned.patch
+upstream/0011-modules-readme-files-regenerated-topos.patch
+upstream/0012-userblacklist-fix-typo-on-evaluating-the-table-param.patch
+upstream/0013-userblacklist-more-debug-info-when-failing-to-do-the.patch
+upstream/0014-userblacklist-fixed-copy-paste-typo-when-evaluating-.patch
+upstream/0015-rr-fix-spelling-errors-catched-by-lintian-688.patch
+upstream/0016-rr-refactored-the-check-route-params-to-detect-prope.patch
+upstream/0017-dialog-open-db-connection-from-rpc-processes.patch
+upstream/0018-tm-check-branch-uri-against-current-uri-when-decidin.patch
+upstream/0019-rtpengine-init-rtp-engine-sockets-array-after-alloca.patch
+upstream/0020-rtpproxy-init-rtpproxy-sockets-array-after-allocatio.patch
no_lib64_on_64_bits.patch
no_INSTALL_file.patch
fix_export.patch
diff --git a/debian/patches/upstream/0001-dmq-Correct-README.patch b/debian/patches/upstream/0001-dmq-Correct-README.patch
new file mode 100644
index 0000000..133ae35
--- /dev/null
+++ b/debian/patches/upstream/0001-dmq-Correct-README.patch
@@ -0,0 +1,28 @@
+From 78a990946a1acd49e349ce46595f8641d6130781 Mon Sep 17 00:00:00 2001
+From: "Olle E. Johansson" <oej at edvina.net>
+Date: Wed, 29 Jun 2016 11:37:40 +0200
+Subject: [PATCH] dmq Correct README
+
+Reported by Jan Hazenberg on mailing list
+
+(cherry picked from commit 0fbc629089328c35ac8041c5d453230de5334505)
+---
+ modules/dmq/doc/dmq_admin.xml | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/modules/dmq/doc/dmq_admin.xml b/modules/dmq/doc/dmq_admin.xml
+index 14b4a8e..5f9e60f 100644
+--- a/modules/dmq/doc/dmq_admin.xml
++++ b/modules/dmq/doc/dmq_admin.xml
+@@ -166,7 +166,7 @@ modparam("dmq", "multi_notify", 1)
+ <title>Set <varname>num_workers</varname> parameter</title>
+ <programlisting format="linespecific">
+ ...
+-modparam("dmq", "num_threads", 4)
++modparam("dmq", "num_workers", 4)
+ ...
+ </programlisting>
+ </example>
+--
+2.8.1
+
diff --git a/debian/patches/upstream/0002-modules-readme-files-regenerated-dmq.patch b/debian/patches/upstream/0002-modules-readme-files-regenerated-dmq.patch
new file mode 100644
index 0000000..c367a0d
--- /dev/null
+++ b/debian/patches/upstream/0002-modules-readme-files-regenerated-dmq.patch
@@ -0,0 +1,25 @@
+From 87d37554e111760ad4362f0be1698ef1978ab944 Mon Sep 17 00:00:00 2001
+From: Kamailio Dev <kamailio.dev at kamailio.org>
+Date: Wed, 29 Jun 2016 11:46:17 +0200
+Subject: [PATCH] modules: readme files regenerated - dmq ...
+
+---
+ modules/dmq/README | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/modules/dmq/README b/modules/dmq/README
+index e9290c7..754be4f 100644
+--- a/modules/dmq/README
++++ b/modules/dmq/README
+@@ -219,7 +219,7 @@ modparam("dmq", "multi_notify", 1)
+
+ Example 1.5. Set num_workers parameter
+ ...
+-modparam("dmq", "num_threads", 4)
++modparam("dmq", "num_workers", 4)
+ ...
+
+ 3.5. ping_interval(int)
+--
+2.8.1
+
diff --git a/debian/patches/upstream/0003-topos-note-in-docs-that-masking-callid-is-not-implem.patch b/debian/patches/upstream/0003-topos-note-in-docs-that-masking-callid-is-not-implem.patch
new file mode 100644
index 0000000..2d54272
--- /dev/null
+++ b/debian/patches/upstream/0003-topos-note-in-docs-that-masking-callid-is-not-implem.patch
@@ -0,0 +1,30 @@
+From 915edc834c9a694026b09d8b77dcfc4165d2998f Mon Sep 17 00:00:00 2001
+From: Daniel-Constantin Mierla <miconda at gmail.com>
+Date: Thu, 30 Jun 2016 14:39:28 +0200
+Subject: [PATCH] topos: note in docs that masking callid is not implemented
+ yet
+
+(cherry picked from commit 3c358de7683a15573dc1ee608e539ebb2e0122bf)
+---
+ modules/topos/doc/topos_admin.xml | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/modules/topos/doc/topos_admin.xml b/modules/topos/doc/topos_admin.xml
+index cf06022..ad74d22 100644
+--- a/modules/topos/doc/topos_admin.xml
++++ b/modules/topos/doc/topos_admin.xml
+@@ -90,6 +90,11 @@ modparam("topos", "db_url", "&exampledb;")
+ <section id="topos.p.mask_callid">
+ <title><varname>mask_callid</varname> (int)</title>
+ <para>
++ Note: this functionality is not implemented yet - the
++ parameter is present in order to be in pair with topoh
++ module.
++ </para>
++ <para>
+ Whether to replace or not the Call-ID with another
+ unique id generated by &kamailio;.
+ </para>
+--
+2.8.1
+
diff --git a/debian/patches/upstream/0004-db_unixodbc-detect-DB-disconnection-with-generic-HY0.patch b/debian/patches/upstream/0004-db_unixodbc-detect-DB-disconnection-with-generic-HY0.patch
new file mode 100644
index 0000000..edb87d7
--- /dev/null
+++ b/debian/patches/upstream/0004-db_unixodbc-detect-DB-disconnection-with-generic-HY0.patch
@@ -0,0 +1,28 @@
+From e2874495b1ecad9e85b47f6d8bdb847fceb0c3ad Mon Sep 17 00:00:00 2001
+From: Giovanni Mele <giovanni.mele at nagra.com>
+Date: Fri, 1 Jul 2016 14:51:12 +0200
+Subject: [PATCH] db_unixodbc: detect DB disconnection with generic HY000
+ status
+
+(cherry picked from commit d80376f9ea087328a0c46d97b908993baeb5b1b4)
+---
+ modules/db_unixodbc/dbase.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/modules/db_unixodbc/dbase.c b/modules/db_unixodbc/dbase.c
+index d5c7d27..304b4d4 100644
+--- a/modules/db_unixodbc/dbase.c
++++ b/modules/db_unixodbc/dbase.c
+@@ -138,7 +138,8 @@ static int db_unixodbc_submit_query(const db1_con_t* _h, const str* _s)
+
+ /* Connection broken */
+ if( !strncmp((char*)sqlstate,"08003",5) ||
+- !strncmp((char*)sqlstate,"08S01",5)
++ !strncmp((char*)sqlstate,"08S01",5) ||
++ !strncmp((char*)sqlstate,"HY000",5) /* ODBC 3 General error */
+ )
+ {
+ ret = reconnect(_h);
+--
+2.8.1
+
diff --git a/debian/patches/upstream/0005-core-fix-Sun-Studio-build.patch b/debian/patches/upstream/0005-core-fix-Sun-Studio-build.patch
new file mode 100644
index 0000000..f812ae0
--- /dev/null
+++ b/debian/patches/upstream/0005-core-fix-Sun-Studio-build.patch
@@ -0,0 +1,214 @@
+From bed895fcdd3cc7bc3ea131873405df0c90f8eb18 Mon Sep 17 00:00:00 2001
+From: Spencer Thomason <spencer at whiteskycommunications.com>
+Date: Thu, 30 Jun 2016 12:44:11 -0700
+Subject: [PATCH] core: fix Sun Studio build
+
+- update Makefile.defs for recent versions of Solaris Studio
+
+(cherry picked from commit 2a3915d456289cfc1685b081ab351fc00c1e3dfb)
+---
+ Makefile.defs | 27 ++++++++++++++++-----------
+ action.c | 4 ++--
+ atomic/atomic_sparc64.h | 3 +++
+ io_wait.h | 4 ++++
+ ip_addr.h | 1 -
+ sr_module.h | 8 ++++----
+ tls_hooks.h | 2 +-
+ 7 files changed, 30 insertions(+), 19 deletions(-)
+
+diff --git a/Makefile.defs b/Makefile.defs
+index 11fc3b1..6997e5e 100644
+--- a/Makefile.defs
++++ b/Makefile.defs
+@@ -254,6 +254,7 @@ ifneq (, $(findstring Sun, $(CC_LONGVER)))
+ sed -e 's/.*\([0-9]\.[0-9]\).*/\1/g' )
+ CC_VER=$(CC) $(CC_SHORTVER)
+ MKDEP=$(CC) -xM1
++ CC_MKDEP_OPTS=-xMMD
+ endif
+
+ ifneq (, $(findstring Intel(R) C++ Compiler, $(CC_LONGVER)))
+@@ -1093,9 +1094,12 @@ endif #CC_SHORTVER, 6.0+, 5.0+, 4.5+ or 4.2+
+
+ else #CC_NAME, gcc
+ ifeq ($(CC_NAME), suncc)
++ C_DEFS+=-DCC_GCC_LIKE_ASM
+ C_DEFS+=-DSPARC64_MODE
+- CFLAGS+= -m64 -g -xO5 -fast -native -xarch=v9 -xCC \
++ CFLAGS+= -m64 -g -xO3 -xtarget=native -xmemalign=8i \
++ -fma=fused -fns=yes \
+ -xc99 # C99 support
++ LDFLAGS+=-m64
+ # -Dinline="" # add this if cc < 5.3 (define inline as null)
+ else
+ #other compilers
+@@ -1159,7 +1163,9 @@ endif #CC_SHORTVER, 6.0+, 5.0+, 4.5+ or 4.2+
+
+ else #CC_NAME, gcc
+ ifeq ($(CC_NAME), suncc)
+- CFLAGS+= -g -xO5 -fast -native -xCC \
++ C_DEFS+=-DCC_GCC_LIKE_ASM
++ CFLAGS+= -g -xO3 -xtarget=native -xmemalign=4i \
++ -fma=fused -fns=yes \
+ -xc99 # C99 support
+ # -Dinline="" # add this if cc < 5.3 (define inline as null)
+ else
+@@ -1589,11 +1595,11 @@ ifeq ($(CC_NAME), icc)
+ endif
+ ifeq ($(CC_NAME), suncc)
+ # -dy?
+- LDFLAGS+=-xO5 $(PROFILE)
++ LDFLAGS+=-xO3 $(PROFILE)
+ MOD_LDFLAGS:=-G $(LDFLAGS)
+ LIB_LDFLAGS:=-G $(LDFLAGS)
+- LIB_SONAME="-h "
+- LD_RPATH=-"-R "
++ LIB_SONAME=-Wl,-h,
++ LD_RPATH=-Wl,-R,
+ endif
+ # we need -fPIC -DPIC only for shared objects, we don't need them for
+ # the executable file, because it's always loaded at a fixed address
+@@ -1650,8 +1656,8 @@ ifeq ($(CC_NAME), suncc)
+ LDFLAGS+=-g $(PROFILE)
+ MOD_LDFLAGS:=-G $(LDFLAGS)
+ LIB_LDFLAGS:=-G $(LDFLAGS)
+- LIB_SONAME="-h "
+- LD_RPATH=-"-R "
++ LIB_SONAME=-Wl,-h,
++ LD_RPATH=-Wl,-R,
+ endif
+
+ endif #mode=release
+@@ -1680,9 +1686,8 @@ MOD_CFLAGS=-Kpic $(CFLAGS)
+ LIB_CFLAGS=-Kpic $(CFLAGS)
+ endif
+ ifeq ($(CC_NAME), suncc)
+-# FIMXE: use -KPIC instead -xcode ?
+-MOD_CFLAGS=-xcode=pic32 $(CFLAGS)
+-LIB_CFLAGS=-xcode=pic32 $(CFLAGS)
++MOD_CFLAGS=-xcode=pic32 $(CFLAGS)
++LIB_CFLAGS=-xcode=pic32 $(CFLAGS)
+ endif
+ ifeq ($(CC_NAME), clang)
+ MOD_CFLAGS=-fPIC -DPIC $(CFLAGS)
+@@ -1823,7 +1828,7 @@ ifeq ($(OS), solaris)
+ YACC=yacc
+
+ ifeq ($(CC_NAME), suncc)
+- LIBS= -lfast -ldl -lresolv
++ LIBS= -ldl -lresolv
+ endif
+ OLD_SOLARIS= $(shell echo "$(OSREL)" | \
+ sed -e 's/^5\.[0-6][^0-9]*$$/yes/' )
+diff --git a/action.c b/action.c
+index bef3ec6..6386aac 100644
+--- a/action.c
++++ b/action.c
+@@ -229,7 +229,7 @@ char *get_cfg_crt_name(void)
+ #define MODF_CALL(f_type, h, msg, src, ...) \
+ do { \
+ cmd=(src)[0].u.data; \
+- ret=((f_type)cmd->function)((msg), __VAR_ARGS__); \
++ ret=((f_type)cmd->function)((msg), __VA_ARGS__); \
+ MODF_HANDLE_RETCODE(h, ret); \
+ } while (0)
+ #else /* ! __SUNPRO_C (gcc, icc a.s.o) */
+@@ -263,7 +263,7 @@ char *get_cfg_crt_name(void)
+ do { \
+ cmd=(src)[0].u.data; \
+ MODF_RVE_PARAM_CONVERT(h, msg, cmd, src, dst); \
+- ret=((f_type)cmd->function)((msg), __VAR_ARGS__); \
++ ret=((f_type)cmd->function)((msg), __VA_ARGS__); \
+ MODF_HANDLE_RETCODE(h, ret); \
+ /* free strings allocated by us or fixups */ \
+ MODF_RVE_PARAM_FREE(cmd, src, dst); \
+diff --git a/atomic/atomic_sparc64.h b/atomic/atomic_sparc64.h
+index 01ce64b..19a4897 100644
+--- a/atomic/atomic_sparc64.h
++++ b/atomic/atomic_sparc64.h
+@@ -46,6 +46,9 @@
+ #define HAVE_ASM_INLINE_MEMBAR
+
+
++#ifdef __SUNPRO_C
++#pragma error_messages (off,E_ASM_UNUSED_PARAM)
++#endif
+
+ /* try to guess if in SPARC64_MODE */
+ #if ! defined SPARC64_MODE && \
+diff --git a/io_wait.h b/io_wait.h
+index 0485e39..3325094 100644
+--- a/io_wait.h
++++ b/io_wait.h
+@@ -106,6 +106,10 @@ typedef int fd_type;
+ #define FD_TYPE_DEFINED
+ #endif
+
++#ifdef __SUNPRO_C
++#pragma weak handle_io
++#endif
++
+ /* maps a fd to some other structure; used in almost all cases
+ * except epoll and maybe kqueue or /dev/poll */
+ struct fd_map{
+diff --git a/ip_addr.h b/ip_addr.h
+index c2b724c..f0a5317 100644
+--- a/ip_addr.h
++++ b/ip_addr.h
+@@ -658,7 +658,6 @@ static inline int ip_addr2sbuf(struct ip_addr* ip, char* buff, int len)
+ LM_CRIT("unknown address family %d\n", ip->af);
+ return 0;
+ }
+- return 0;
+ }
+
+
+diff --git a/sr_module.h b/sr_module.h
+index 6eb42fb..e42ccdf 100644
+--- a/sr_module.h
++++ b/sr_module.h
+@@ -208,7 +208,7 @@ struct ser_cmd_export_ {
+ int param_no; /**< number of parameters used by the function */
+ fixup_function fixup; /**< pointer to the function called to "fix" the
+ parameters */
+- int flags; /**< Function flags */
++ unsigned int flags; /**< Function flags */
+ };
+
+
+@@ -221,7 +221,7 @@ struct kam_cmd_export_ {
+ parameters */
+ free_fixup_function free_fixup; /**< function called to free the "fixed"
+ parameters */
+- int flags; /**< Function flags */
++ unsigned int flags; /**< Function flags */
+ };
+
+ /** sip-router version */
+@@ -233,8 +233,8 @@ struct sr31_cmd_export_ {
+ parameters */
+ free_fixup_function free_fixup; /**< function called to free the "fixed"
+ parameters */
+- int flags; /**< Function flags */
+- int fixup_flags;
++ unsigned int flags; /**< Function flags */
++ unsigned int fixup_flags;
+ void* module_exports; /**< pointer to module structure */
+ };
+
+diff --git a/tls_hooks.h b/tls_hooks.h
+index 3ac5bd2..a789a49 100644
+--- a/tls_hooks.h
++++ b/tls_hooks.h
+@@ -84,7 +84,7 @@ extern struct tls_hooks tls_hook;
+ #ifdef __SUNPRO_C
+ #define tls_hook_call(name, ret_not_set, ...) \
+ ((tls_hook.name)?(tls_hook.name(__VA_ARGS__)): (ret_not_set))
+- #define tls_hook_call_v(name, __VA_ARGS__) \
++ #define tls_hook_call_v(name, ...) \
+ do{ \
+ if (tls_hook.name) tls_hook.name(__VA_ARGS__); \
+ }while(0)
+--
+2.8.1
+
diff --git a/debian/patches/upstream/0006-counters-fix-return-statement-in-void-function.patch b/debian/patches/upstream/0006-counters-fix-return-statement-in-void-function.patch
new file mode 100644
index 0000000..a9004fc
--- /dev/null
+++ b/debian/patches/upstream/0006-counters-fix-return-statement-in-void-function.patch
@@ -0,0 +1,36 @@
+From 33073d2af70ed0f289de6cfa2d754763e037ce1b Mon Sep 17 00:00:00 2001
+From: Spencer Thomason <spencer at whiteskycommunications.com>
+Date: Thu, 30 Jun 2016 13:18:00 -0700
+Subject: [PATCH] counters: fix return statement in void function
+
+(cherry picked from commit 37355281dffccc42b1d83f413e3d528bdcf6cdd0)
+---
+ modules/counters/counters.c | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/modules/counters/counters.c b/modules/counters/counters.c
+index 7d7f85e..d90ead1 100644
+--- a/modules/counters/counters.c
++++ b/modules/counters/counters.c
+@@ -288,7 +288,8 @@ static void cnt_get_rpc(rpc_t* rpc, void* c)
+ if (rpc->scan(c, "s", &group) < 1)
+ return;
+ if (rpc->scan(c, "*s", &name) < 1)
+- return cnt_grp_get_all(rpc, c, group);
++ cnt_grp_get_all(rpc, c, group);
++ return;
+ /* group & name read */
+ if (counter_lookup(&h, group, name) < 0) {
+ rpc->fault(c, 400, "non-existent counter %s.%s\n", group, name);
+@@ -427,7 +428,7 @@ static void cnt_grp_get_all_rpc(rpc_t* rpc, void* c)
+ /* rpc->fault(c, 400, "group name required"); */
+ return;
+ }
+- return cnt_grp_get_all(rpc, c, group);
++ cnt_grp_get_all(rpc, c, group);
+ }
+
+
+--
+2.8.1
+
diff --git a/debian/patches/upstream/0007-dialog-remove-return-statement-from-void-functions.patch b/debian/patches/upstream/0007-dialog-remove-return-statement-from-void-functions.patch
new file mode 100644
index 0000000..4b3659b
--- /dev/null
+++ b/debian/patches/upstream/0007-dialog-remove-return-statement-from-void-functions.patch
@@ -0,0 +1,35 @@
+From aea83a031cfb9a774d855462f50e4311cf9f7b43 Mon Sep 17 00:00:00 2001
+From: Spencer Thomason <spencer at whiteskycommunications.com>
+Date: Thu, 30 Jun 2016 13:21:17 -0700
+Subject: [PATCH] dialog: remove return statement from void functions
+
+(cherry picked from commit d90f3b86299223cd37fc21bf6af718540c76b380)
+---
+ modules/dialog/dlg_handlers.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/modules/dialog/dlg_handlers.c b/modules/dialog/dlg_handlers.c
+index 36a807f..6b12d0a 100644
+--- a/modules/dialog/dlg_handlers.c
++++ b/modules/dialog/dlg_handlers.c
+@@ -603,7 +603,7 @@ static void dlg_seq_onreply_helper(struct cell* t, int type,
+ */
+ static void dlg_seq_up_onreply(struct cell* t, int type, struct tmcb_params *param)
+ {
+- return dlg_seq_onreply_helper(t, type, param, DLG_DIR_UPSTREAM);
++ dlg_seq_onreply_helper(t, type, param, DLG_DIR_UPSTREAM);
+ }
+
+
+@@ -616,7 +616,7 @@ static void dlg_seq_up_onreply(struct cell* t, int type, struct tmcb_params *par
+ */
+ static void dlg_seq_down_onreply(struct cell* t, int type, struct tmcb_params *param)
+ {
+- return dlg_seq_onreply_helper(t, type, param, DLG_DIR_DOWNSTREAM);
++ dlg_seq_onreply_helper(t, type, param, DLG_DIR_DOWNSTREAM);
+ }
+
+
+--
+2.8.1
+
diff --git a/debian/patches/upstream/0008-ctl-remove-return-statement-from-void-function.patch b/debian/patches/upstream/0008-ctl-remove-return-statement-from-void-function.patch
new file mode 100644
index 0000000..1ca5d1c
--- /dev/null
+++ b/debian/patches/upstream/0008-ctl-remove-return-statement-from-void-function.patch
@@ -0,0 +1,26 @@
+From c5d8095c7fa548a7199a03bf1f5d69d56202568a Mon Sep 17 00:00:00 2001
+From: Spencer Thomason <spencer at whiteskycommunications.com>
+Date: Thu, 30 Jun 2016 13:22:57 -0700
+Subject: [PATCH] ctl: remove return statement from void function
+
+(cherry picked from commit 16e6bdf814576e26a5f5f46bdfcb98ab1fd4e04d)
+---
+ modules/ctl/binrpc_run.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/modules/ctl/binrpc_run.c b/modules/ctl/binrpc_run.c
+index 3b9153e..5bdd869 100644
+--- a/modules/ctl/binrpc_run.c
++++ b/modules/ctl/binrpc_run.c
+@@ -486,7 +486,7 @@ static void rpc_fault(struct binrpc_ctx* ctx, int code, char* fmt, ...)
+ va_end(ap);
+
+ len++; /* vnsprintf doesn't include the terminating 0 */
+- return _rpc_fault(ctx, code, buf, len);
++ _rpc_fault(ctx, code, buf, len);
+ }
+
+ /* Prepare the error reply without sending out the message */
+--
+2.8.1
+
diff --git a/debian/patches/upstream/0009-uid_avp_db-remove-GCC-specific-Wall.patch b/debian/patches/upstream/0009-uid_avp_db-remove-GCC-specific-Wall.patch
new file mode 100644
index 0000000..800b9d9
--- /dev/null
+++ b/debian/patches/upstream/0009-uid_avp_db-remove-GCC-specific-Wall.patch
@@ -0,0 +1,25 @@
+From 301017af120d0e7c75821c00dad07892b6a366c2 Mon Sep 17 00:00:00 2001
+From: Spencer Thomason <spencer at whiteskycommunications.com>
+Date: Thu, 30 Jun 2016 13:35:36 -0700
+Subject: [PATCH] uid_avp_db: remove GCC specific -Wall
+
+(cherry picked from commit 4fc8d37df84d856b848fd4e894c21e0fbf02bb56)
+---
+ modules/uid_avp_db/Makefile | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/modules/uid_avp_db/Makefile b/modules/uid_avp_db/Makefile
+index 0b9a74c..2b08ae2 100644
+--- a/modules/uid_avp_db/Makefile
++++ b/modules/uid_avp_db/Makefile
+@@ -8,7 +8,6 @@ include ../../Makefile.defs
+ auto_gen=
+ NAME=uid_avp_db.so
+ LIBS=
+-DEFS += -Wall
+
+ DEFS+=-DSER_MOD_INTERFACE
+
+--
+2.8.1
+
diff --git a/debian/patches/upstream/0010-core-ensure-cfg_block-structure-is-8-byte-aligned.patch b/debian/patches/upstream/0010-core-ensure-cfg_block-structure-is-8-byte-aligned.patch
new file mode 100644
index 0000000..2faa7a0
--- /dev/null
+++ b/debian/patches/upstream/0010-core-ensure-cfg_block-structure-is-8-byte-aligned.patch
@@ -0,0 +1,28 @@
+From 795556061412439618c640ef19e8579486f0c58a Mon Sep 17 00:00:00 2001
+From: Spencer Thomason <spencer at whiteskycommunications.com>
+Date: Fri, 1 Jul 2016 09:14:12 -0700
+Subject: [PATCH] core: ensure cfg_block structure is 8 byte aligned
+
+- prevents bus error on stricter cpu architectures like sparc
+- reported by GH #655
+
+(cherry picked from commit 0fd0715d015a2396b0ec66cb0bc83ec0b61c0d08)
+---
+ cfg/cfg_struct.h | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/cfg/cfg_struct.h b/cfg/cfg_struct.h
+index 452bb90..6436eed 100644
+--- a/cfg/cfg_struct.h
++++ b/cfg/cfg_struct.h
+@@ -129,6 +129,7 @@ typedef struct _cfg_block {
+ atomic_t refcnt; /*!< reference counter,
+ the block is automatically deleted
+ when it reaches 0 */
++ int _pad; /*!< force 8 byte alignment */
+ unsigned char vars[1]; /*!< blob that contains the values */
+ } cfg_block_t;
+
+--
+2.8.1
+
diff --git a/debian/patches/upstream/0011-modules-readme-files-regenerated-topos.patch b/debian/patches/upstream/0011-modules-readme-files-regenerated-topos.patch
new file mode 100644
index 0000000..62b36ac
--- /dev/null
+++ b/debian/patches/upstream/0011-modules-readme-files-regenerated-topos.patch
@@ -0,0 +1,26 @@
+From 379e6df158837c2510592c75d4a71c19c32f4d13 Mon Sep 17 00:00:00 2001
+From: Kamailio Dev <kamailio.dev at kamailio.org>
+Date: Tue, 5 Jul 2016 12:01:18 +0200
+Subject: [PATCH] modules: readme files regenerated - topos ...
+
+---
+ modules/topos/README | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/modules/topos/README b/modules/topos/README
+index acbe077..3fc421c 100644
+--- a/modules/topos/README
++++ b/modules/topos/README
+@@ -112,6 +112,9 @@ modparam("topos", "db_url", "dbdriver://username:password@dbhost/dbname")
+
+ 3.2. mask_callid (int)
+
++ Note: this functionality is not implemented yet - the parameter is
++ present in order to be in pair with topoh module.
++
+ Whether to replace or not the Call-ID with another unique id generated
+ by Kamailio.
+
+--
+2.8.1
+
diff --git a/debian/patches/upstream/0012-userblacklist-fix-typo-on-evaluating-the-table-param.patch b/debian/patches/upstream/0012-userblacklist-fix-typo-on-evaluating-the-table-param.patch
new file mode 100644
index 0000000..8bd0e8d
--- /dev/null
+++ b/debian/patches/upstream/0012-userblacklist-fix-typo-on-evaluating-the-table-param.patch
@@ -0,0 +1,30 @@
+From 89c556b5839959d8ef6dce3f0ba7ab6a27c53f3e Mon Sep 17 00:00:00 2001
+From: Daniel-Constantin Mierla <miconda at gmail.com>
+Date: Tue, 5 Jul 2016 15:33:00 +0200
+Subject: [PATCH] userblacklist: fix typo on evaluating the table parameter
+
+- regression introduced in previous commit, when converting to use core
+ fixup helpers
+- reported by Tim Balmer
+
+(cherry picked from commit 3ad232e1d1ff8533fca425d3c4ee3ccaa1456916)
+---
+ modules/userblacklist/userblacklist.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/modules/userblacklist/userblacklist.c b/modules/userblacklist/userblacklist.c
+index 20416ed..44ed6f0 100644
+--- a/modules/userblacklist/userblacklist.c
++++ b/modules/userblacklist/userblacklist.c
+@@ -236,7 +236,7 @@ static int check_user_list(sip_msg_t *msg, char* str1, char* str2,
+ }
+ /* table name */
+ if(str4 != NULL) {
+- if(fixup_get_svalue(msg, (gparam_t*)str3, &table)!=0) {
++ if(fixup_get_svalue(msg, (gparam_t*)str4, &table)!=0) {
+ LM_ERR("cannot print number pseudo-variable\n");
+ return -1;
+ }
+--
+2.8.1
+
diff --git a/debian/patches/upstream/0013-userblacklist-more-debug-info-when-failing-to-do-the.patch b/debian/patches/upstream/0013-userblacklist-more-debug-info-when-failing-to-do-the.patch
new file mode 100644
index 0000000..e62db23
--- /dev/null
+++ b/debian/patches/upstream/0013-userblacklist-more-debug-info-when-failing-to-do-the.patch
@@ -0,0 +1,319 @@
+From 67fbc93eadbd07c0433d27c293336b845d30c1e9 Mon Sep 17 00:00:00 2001
+From: Daniel-Constantin Mierla <miconda at gmail.com>
+Date: Tue, 5 Jul 2016 20:04:42 +0200
+Subject: [PATCH] userblacklist: more debug info when failing to do the query
+
+- renamed some parameters in order to be suggestive for their purpose
+- code reformatting for long line
+
+(cherry picked from commit dce52ed68cf67375a7a9afbe34c8cc479b40c2c5)
+---
+ modules/userblacklist/db.c | 55 ++++++++++++-------
+ modules/userblacklist/userblacklist.c | 99 ++++++++++++++++++++---------------
+ 2 files changed, 93 insertions(+), 61 deletions(-)
+
+diff --git a/modules/userblacklist/db.c b/modules/userblacklist/db.c
+index bebb574..a679ae8 100644
+--- a/modules/userblacklist/db.c
++++ b/modules/userblacklist/db.c
+@@ -13,8 +13,8 @@
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+- * You should have received a copy of the GNU General Public License
+- * along with this program; if not, write to the Free Software
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+@@ -42,7 +42,8 @@
+
+ extern int match_mode;
+
+-int db_build_userbl_tree(const str *username, const str *domain, const str *table, struct dtrie_node_t *root, int use_domain)
++int db_build_userbl_tree(const str *username, const str *domain,
++ const str *dbtable, struct dtrie_node_t *root, int use_domain)
+ {
+ db_key_t columns[2] = { &userblacklist_prefix_col, &userblacklist_whitelist_col };
+ db_key_t key[2] = { &userblacklist_username_col, &userblacklist_domain_col };
+@@ -59,13 +60,14 @@ int db_build_userbl_tree(const str *username, const str *domain, const str *tabl
+ VAL_STR(val + 1).s = domain->s;
+ VAL_STR(val + 1).len = domain->len;
+
+-
+- if (userblacklist_dbf.use_table(userblacklist_dbh, table) < 0) {
+- LM_ERR("cannot use table '%.*s'.\n", table->len, table->s);
++ if (userblacklist_dbf.use_table(userblacklist_dbh, dbtable) < 0) {
++ LM_ERR("cannot use db table '%.*s'.\n", dbtable->len, dbtable->s);
+ return -1;
+ }
+- if (userblacklist_dbf.query(userblacklist_dbh, key, 0, val, columns, (!use_domain) ? (1) : (2), 2, 0, &res) < 0) {
+- LM_ERR("error while executing query.\n");
++ if (userblacklist_dbf.query(userblacklist_dbh, key, 0, val, columns,
++ (!use_domain) ? (1) : (2), 2, 0, &res) < 0) {
++ LM_ERR("error while executing query on db table '%.*s'\n",
++ dbtable->len, dbtable->s);
+ return -1;
+ }
+
+@@ -85,8 +87,12 @@ int db_build_userbl_tree(const str *username, const str *domain, const str *tabl
+ } else {
+ nodeflags=(void *)MARK_WHITELIST;
+ }
+- if (dtrie_insert(root, RES_ROWS(res)[i].values[0].val.string_val, strlen(RES_ROWS(res)[i].values[0].val.string_val),
+- nodeflags, match_mode) < 0) LM_ERR("could not insert values into trie.\n");
++
++ if (dtrie_insert(root, RES_ROWS(res)[i].values[0].val.string_val,
++ strlen(RES_ROWS(res)[i].values[0].val.string_val),
++ nodeflags, match_mode) < 0)
++ LM_ERR("could not insert values into trie.\n");
++
+ n++;
+ }
+ else {
+@@ -105,20 +111,22 @@ int db_build_userbl_tree(const str *username, const str *domain, const str *tabl
+ * Rebuild d-tree using database entries
+ * \return negative on failure, positive on success, indicating the number of d-tree entries
+ */
+-int db_reload_source(const str *table, struct dtrie_node_t *root)
++int db_reload_source(const str *dbtable, struct dtrie_node_t *root)
+ {
+ db_key_t columns[2] = { &globalblacklist_prefix_col, &globalblacklist_whitelist_col };
+ db1_res_t *res;
+ int i;
+ int n = 0;
+ void *nodeflags;
+-
+- if (userblacklist_dbf.use_table(userblacklist_dbh, table) < 0) {
+- LM_ERR("cannot use table '%.*s'.\n", table->len, table->s);
++
++ if (userblacklist_dbf.use_table(userblacklist_dbh, dbtable) < 0) {
++ LM_ERR("cannot use db table '%.*s'\n", dbtable->len, dbtable->s);
+ return -1;
+ }
+- if (userblacklist_dbf.query(userblacklist_dbh, NULL, NULL, NULL, columns, 0, 2, NULL, &res) < 0) {
+- LM_ERR("error while executing query.\n");
++ if (userblacklist_dbf.query(userblacklist_dbh, NULL, NULL, NULL,
++ columns, 0, 2, NULL, &res) < 0) {
++ LM_ERR("error while executing query on db table '%.*s'\n",
++ dbtable->len, dbtable->s);
+ return -1;
+ }
+
+@@ -133,10 +141,17 @@ int db_reload_source(const str *table, struct dtrie_node_t *root)
+ /* LM_DBG("insert into tree prefix %s, whitelist %d",
+ RES_ROWS(res)[i].values[0].val.string_val,
+ RES_ROWS(res)[i].values[1].val.int_val); */
+- if (RES_ROWS(res)[i].values[1].val.int_val == 0) nodeflags=(void *) MARK_BLACKLIST;
+- else nodeflags=(void *)MARK_WHITELIST;
+- if (dtrie_insert(root, RES_ROWS(res)[i].values[0].val.string_val, strlen(RES_ROWS(res)[i].values[0].val.string_val),
+- nodeflags, match_mode) < 0) LM_ERR("could not insert values into trie.\n");
++ if (RES_ROWS(res)[i].values[1].val.int_val == 0) {
++ nodeflags=(void *)MARK_BLACKLIST;
++ } else {
++ nodeflags=(void *)MARK_WHITELIST;
++ }
++
++ if (dtrie_insert(root, RES_ROWS(res)[i].values[0].val.string_val,
++ strlen(RES_ROWS(res)[i].values[0].val.string_val),
++ nodeflags, match_mode) < 0)
++ LM_ERR("could not insert values into trie.\n");
++
+ n++;
+ }
+ else {
+diff --git a/modules/userblacklist/userblacklist.c b/modules/userblacklist/userblacklist.c
+index 44ed6f0..cac4279 100644
+--- a/modules/userblacklist/userblacklist.c
++++ b/modules/userblacklist/userblacklist.c
+@@ -89,15 +89,19 @@ static int check_user_blacklist_fixup(void** param, int param_no);
+ static int check_globalblacklist_fixup(void** param, int param_no);
+
+ /* ---- exported commands: */
+-static int check_user_blacklist(struct sip_msg *msg, char* str1, char* str2, char* str3, char* str4);
+-static int check_user_whitelist(struct sip_msg *msg, char* str1, char* str2, char* str3, char* str4);
+-static int check_user_blacklist2(struct sip_msg *msg, char* str1, char* str2);
+-static int check_user_whitelist2(struct sip_msg *msg, char* str1, char* str2);
+-static int check_user_blacklist3(struct sip_msg *msg, char* str1, char* str2, char* str3);
+-static int check_user_whitelist3(struct sip_msg *msg, char* str1, char* str2, char* str3);
+-static int check_blacklist(struct sip_msg *msg, struct check_blacklist_fs_t *arg1);
+-static int check_whitelist(struct sip_msg *msg, struct check_blacklist_fs_t *arg1);
+-static int check_globalblacklist(struct sip_msg *msg);
++static int check_user_blacklist(sip_msg_t *msg, char* puser,
++ char* pdomain, char* pnumber, char* ptable);
++static int check_user_whitelist(sip_msg_t *msg, char* puser,
++ char* pdomain, char* pnumber, char* ptable);
++static int check_user_blacklist2(sip_msg_t *msg, char* puser, char* pdomain);
++static int check_user_whitelist2(sip_msg_t *msg, char* puser, char* pdomain);
++static int check_user_blacklist3(sip_msg_t *msg, char* puser, char* pdomain,
++ char* pnumber);
++static int check_user_whitelist3(sip_msg_t *msg, char* puser, char* pdomain,
++ char* pnumber);
++static int check_blacklist(sip_msg_t *msg, struct check_blacklist_fs_t *arg1);
++static int check_whitelist(sip_msg_t *msg, struct check_blacklist_fs_t *arg1);
++static int check_globalblacklist(sip_msg_t *msg);
+
+
+ /* ---- module init functions: */
+@@ -116,15 +120,24 @@ struct mi_root * mi_check_userwhitelist(struct mi_root* cmd, void* param); /* u
+
+
+ static cmd_export_t cmds[]={
+- { "check_user_blacklist", (cmd_function)check_user_blacklist2, 2, check_user_blacklist_fixup, 0, REQUEST_ROUTE | FAILURE_ROUTE },
+- { "check_user_whitelist", (cmd_function)check_user_whitelist2, 2, check_user_blacklist_fixup, 0, REQUEST_ROUTE | FAILURE_ROUTE },
+- { "check_user_blacklist", (cmd_function)check_user_blacklist3, 3, check_user_blacklist_fixup, 0, REQUEST_ROUTE | FAILURE_ROUTE },
+- { "check_user_whitelist", (cmd_function)check_user_whitelist3, 3, check_user_blacklist_fixup, 0, REQUEST_ROUTE | FAILURE_ROUTE },
+- { "check_user_blacklist", (cmd_function)check_user_blacklist, 4, check_user_blacklist_fixup, 0, REQUEST_ROUTE | FAILURE_ROUTE },
+- { "check_user_whitelist", (cmd_function)check_user_whitelist, 4, check_user_blacklist_fixup, 0, REQUEST_ROUTE | FAILURE_ROUTE },
+- { "check_blacklist", (cmd_function)check_blacklist, 1, check_blacklist_fixup, 0, REQUEST_ROUTE | FAILURE_ROUTE },
+- { "check_whitelist", (cmd_function)check_whitelist, 1, check_blacklist_fixup, 0, REQUEST_ROUTE | FAILURE_ROUTE },
+- { "check_blacklist", (cmd_function)check_globalblacklist, 0, check_globalblacklist_fixup, 0, REQUEST_ROUTE | FAILURE_ROUTE },
++ { "check_user_blacklist", (cmd_function)check_user_blacklist2, 2,
++ check_user_blacklist_fixup, 0, REQUEST_ROUTE | FAILURE_ROUTE },
++ { "check_user_whitelist", (cmd_function)check_user_whitelist2, 2,
++ check_user_blacklist_fixup, 0, REQUEST_ROUTE | FAILURE_ROUTE },
++ { "check_user_blacklist", (cmd_function)check_user_blacklist3, 3,
++ check_user_blacklist_fixup, 0, REQUEST_ROUTE | FAILURE_ROUTE },
++ { "check_user_whitelist", (cmd_function)check_user_whitelist3, 3,
++ check_user_blacklist_fixup, 0, REQUEST_ROUTE | FAILURE_ROUTE },
++ { "check_user_blacklist", (cmd_function)check_user_blacklist, 4,
++ check_user_blacklist_fixup, 0, REQUEST_ROUTE | FAILURE_ROUTE },
++ { "check_user_whitelist", (cmd_function)check_user_whitelist, 4,
++ check_user_blacklist_fixup, 0, REQUEST_ROUTE | FAILURE_ROUTE },
++ { "check_blacklist", (cmd_function)check_blacklist, 1,
++ check_blacklist_fixup, 0, REQUEST_ROUTE | FAILURE_ROUTE },
++ { "check_whitelist", (cmd_function)check_whitelist, 1,
++ check_blacklist_fixup, 0, REQUEST_ROUTE | FAILURE_ROUTE },
++ { "check_blacklist", (cmd_function)check_globalblacklist, 0,
++ check_globalblacklist_fixup, 0, REQUEST_ROUTE | FAILURE_ROUTE },
+ { 0, 0, 0, 0, 0, 0}
+ };
+
+@@ -205,8 +218,8 @@ static int check_user_blacklist_fixup(void** param, int param_no)
+ }
+
+
+-static int check_user_list(sip_msg_t *msg, char* str1, char* str2,
+- char* str3, char* str4, int listtype)
++static int check_user_list(sip_msg_t *msg, char* puser, char* pdomain,
++ char* pnumber, char* ptable, int listtype)
+ {
+ str user = { .len = 0, .s = NULL };
+ str domain = { .len = 0, .s = NULL};
+@@ -218,25 +231,25 @@ static int check_user_list(sip_msg_t *msg, char* str1, char* str2,
+ char req_number[MAXNUMBERLEN+1];
+
+ /* user */
+- if(fixup_get_svalue(msg, (gparam_t*)str1, &user)!=0) {
++ if(fixup_get_svalue(msg, (gparam_t*)puser, &user)!=0) {
+ LM_ERR("cannot print user pseudo-variable\n");
+ return -1;
+ }
+ /* domain */
+- if(fixup_get_svalue(msg, (gparam_t*)str2, &domain)!=0) {
++ if(fixup_get_svalue(msg, (gparam_t*)pdomain, &domain)!=0) {
+ LM_ERR("cannot print domain pseudo-variable\n");
+ return -1;
+ }
+ /* source number */
+- if(str3 != NULL) {
+- if(fixup_get_svalue(msg, (gparam_t*)str3, &number)!=0) {
++ if(pnumber != NULL) {
++ if(fixup_get_svalue(msg, (gparam_t*)pnumber, &number)!=0) {
+ LM_ERR("cannot print number pseudo-variable\n");
+ return -1;
+ }
+ }
+ /* table name */
+- if(str4 != NULL) {
+- if(fixup_get_svalue(msg, (gparam_t*)str4, &table)!=0) {
++ if(pnumber != NULL) {
++ if(fixup_get_svalue(msg, (gparam_t*)ptable, &table)!=0) {
+ LM_ERR("cannot print number pseudo-variable\n");
+ return -1;
+ }
+@@ -304,37 +317,41 @@ static int check_user_list(sip_msg_t *msg, char* str1, char* str2,
+ }
+
+
+-static int check_user_whitelist(struct sip_msg *msg, char* str1, char* str2, char* str3, char* str4)
++static int check_user_whitelist(sip_msg_t *msg, char* puser,
++ char* pdomain, char* pnumber, char* ptable)
+ {
+- return check_user_list(msg, str1, str2, str3, str4, 1);
++ return check_user_list(msg, puser, pdomain, pnumber, ptable, 1);
+ }
+
+
+-static int check_user_blacklist(struct sip_msg *msg, char* str1, char* str2, char* str3, char* str4)
++static int check_user_blacklist(sip_msg_t *msg, char* puser,
++ char* pdomain, char* pnumber, char* ptable)
+ {
+- return check_user_list(msg, str1, str2, str3, str4, 0);
++ return check_user_list(msg, puser, pdomain, pnumber, ptable, 0);
+ }
+
+-static int check_user_whitelist2(struct sip_msg *msg, char* str1, char* str2)
++static int check_user_whitelist2(sip_msg_t *msg, char* puser, char* pdomain)
+ {
+- return check_user_list(msg, str1, str2, NULL, NULL, 1);
++ return check_user_list(msg, puser, pdomain, NULL, NULL, 1);
+ }
+
+
+-static int check_user_blacklist2(struct sip_msg *msg, char* str1, char* str2)
++static int check_user_blacklist2(sip_msg_t *msg, char* puser, char* pdomain)
+ {
+- return check_user_list(msg, str1, str2, NULL, NULL, 0);
++ return check_user_list(msg, puser, pdomain, NULL, NULL, 0);
+ }
+
+-static int check_user_whitelist3(struct sip_msg *msg, char* str1, char* str2, char* str3)
++static int check_user_whitelist3(sip_msg_t *msg, char* puser, char* pdomain,
++ char* pnumber)
+ {
+- return check_user_list(msg, str1, str2, str3, NULL, 1);
++ return check_user_list(msg, puser, pdomain, pnumber, NULL, 1);
+ }
+
+
+-static int check_user_blacklist3(struct sip_msg *msg, char* str1, char* str2, char* str3)
++static int check_user_blacklist3(sip_msg_t *msg, char* puser, char* pdomain,
++ char* pnumber)
+ {
+- return check_user_list(msg, str1, str2, str3, NULL, 0);
++ return check_user_list(msg, puser, pdomain, pnumber, NULL, 0);
+ }
+
+
+@@ -426,7 +443,7 @@ static int check_globalblacklist_fixup(void** param, int param_no)
+ return 0;
+ }
+
+-static int check_globalblacklist(struct sip_msg* msg)
++static int check_globalblacklist(sip_msg_t* msg)
+ {
+ static struct check_blacklist_fs_t* arg = NULL;
+ if(!arg){
+@@ -482,7 +499,7 @@ static int check_blacklist_fixup(void **arg, int arg_no)
+ }
+
+
+-static int check_blacklist(struct sip_msg *msg, struct check_blacklist_fs_t *arg1)
++static int check_blacklist(sip_msg_t *msg, struct check_blacklist_fs_t *arg1)
+ {
+ void **nodeflags;
+ char *ptr;
+@@ -528,7 +545,7 @@ static int check_blacklist(struct sip_msg *msg, struct check_blacklist_fs_t *arg
+ return ret;
+ }
+
+-static int check_whitelist(struct sip_msg *msg, struct check_blacklist_fs_t *arg1)
++static int check_whitelist(sip_msg_t *msg, struct check_blacklist_fs_t *arg1)
+ {
+ void **nodeflags;
+ char *ptr;
+--
+2.8.1
+
diff --git a/debian/patches/upstream/0014-userblacklist-fixed-copy-paste-typo-when-evaluating-.patch b/debian/patches/upstream/0014-userblacklist-fixed-copy-paste-typo-when-evaluating-.patch
new file mode 100644
index 0000000..5d02257
--- /dev/null
+++ b/debian/patches/upstream/0014-userblacklist-fixed-copy-paste-typo-when-evaluating-.patch
@@ -0,0 +1,30 @@
+From 7d9423448708330f197021d23e94e1b2d13ab8b8 Mon Sep 17 00:00:00 2001
+From: Daniel-Constantin Mierla <miconda at gmail.com>
+Date: Wed, 6 Jul 2016 11:19:08 +0200
+Subject: [PATCH] userblacklist: fixed copy-paste typo when evaluating table
+ parameter
+
+(cherry picked from commit 5d285e90b0f145410acd15a7abf96d3b339a31b5)
+---
+ modules/userblacklist/userblacklist.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/modules/userblacklist/userblacklist.c b/modules/userblacklist/userblacklist.c
+index cac4279..2a1a448 100644
+--- a/modules/userblacklist/userblacklist.c
++++ b/modules/userblacklist/userblacklist.c
+@@ -248,9 +248,9 @@ static int check_user_list(sip_msg_t *msg, char* puser, char* pdomain,
+ }
+ }
+ /* table name */
+- if(pnumber != NULL) {
++ if(ptable != NULL) {
+ if(fixup_get_svalue(msg, (gparam_t*)ptable, &table)!=0) {
+- LM_ERR("cannot print number pseudo-variable\n");
++ LM_ERR("cannot print table pseudo-variable\n");
+ return -1;
+ }
+ }
+--
+2.8.1
+
diff --git a/debian/patches/upstream/0015-rr-fix-spelling-errors-catched-by-lintian-688.patch b/debian/patches/upstream/0015-rr-fix-spelling-errors-catched-by-lintian-688.patch
new file mode 100644
index 0000000..54af053
--- /dev/null
+++ b/debian/patches/upstream/0015-rr-fix-spelling-errors-catched-by-lintian-688.patch
@@ -0,0 +1,26 @@
+From 1ca980fc2d6856d08bd725ffdbb799225ed09885 Mon Sep 17 00:00:00 2001
+From: Victor Seva <linuxmaniac at torreviejawireless.org>
+Date: Wed, 29 Jun 2016 17:19:25 +0200
+Subject: [PATCH] rr: fix spelling errors catched by lintian #688
+
+(cherry picked from commit 8f984a1be0726ec64cb4797a569fb44d1a7a9afd)
+---
+ modules/rr/loose.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/modules/rr/loose.c b/modules/rr/loose.c
+index 1785d8c..48644d9 100644
+--- a/modules/rr/loose.c
++++ b/modules/rr/loose.c
+@@ -43,7 +43,7 @@
+ #include "rr_mod.h"
+
+
+-#define RR_ERROR -1 /*!< An error occured while processing route set */
++#define RR_ERROR -1 /*!< An error occurred while processing route set */
+ #define RR_DRIVEN 1 /*!< The next hop is determined from the route set */
+ #define RR_OB_DRIVEN 2 /*!< The next hop is determined from the route set based on flow-token */
+ #define NOT_RR_DRIVEN -1 /*!< The next hop is not determined from the route set */
+--
+2.8.1
+
diff --git a/debian/patches/upstream/0016-rr-refactored-the-check-route-params-to-detect-prope.patch b/debian/patches/upstream/0016-rr-refactored-the-check-route-params-to-detect-prope.patch
new file mode 100644
index 0000000..9ca8a58
--- /dev/null
+++ b/debian/patches/upstream/0016-rr-refactored-the-check-route-params-to-detect-prope.patch
@@ -0,0 +1,209 @@
+From 7c108788a516c91869e95a01dafc508da473a031 Mon Sep 17 00:00:00 2001
+From: Daniel-Constantin Mierla <miconda at gmail.com>
+Date: Mon, 4 Jul 2016 15:11:01 +0200
+Subject: [PATCH] rr: refactored the check route params to detect properly if
+ same message is used
+
+- cached pointers may get invalid depending on the type of route block
+- reported by GH #663
+
+(cherry picked from commit 4949ebb7258aff41b2fd3a075bdc1a1af4684b5c)
+---
+ modules/rr/loose.c | 103 ++++++++++++++++++++++++++++++++++++++++++++++-------
+ 1 file changed, 90 insertions(+), 13 deletions(-)
+
+diff --git a/modules/rr/loose.c b/modules/rr/loose.c
+index 48644d9..71d7d43 100644
+--- a/modules/rr/loose.c
++++ b/modules/rr/loose.c
+@@ -762,6 +762,7 @@ static inline int after_loose(struct sip_msg* _m, int preloaded)
+ struct socket_info *si;
+ int uri_is_myself;
+ int use_ob = 0;
++ str rparams;
+
+ hdr = _m->route;
+ rt = (rr_t*)hdr->parsed;
+@@ -855,7 +856,7 @@ static inline int after_loose(struct sip_msg* _m, int preloaded)
+ rt = (rr_t*)hdr->parsed;
+ } else rt = rt->next;
+ }
+-
++
+ uri = rt->nameaddr.uri;
+ if (parse_uri(uri.s, uri.len, &puri) < 0) {
+ LM_ERR("failed to parse the next route URI (%.*s)\n",
+@@ -889,7 +890,7 @@ static inline int after_loose(struct sip_msg* _m, int preloaded)
+ LM_ERR("checking maddr failed\n");
+ return RR_ERROR;
+ }
+-
++
+ if (set_dst_uri(_m, &uri) < 0) {
+ LM_ERR("failed to set dst_uri\n");
+ return RR_ERROR;
+@@ -902,7 +903,7 @@ static inline int after_loose(struct sip_msg* _m, int preloaded)
+ /* There is a previous route uri which was 2nd uri of mine
+ * and must be removed here */
+ if (rt != hdr->parsed) {
+- if (!del_lump(_m, hdr->body.s - _m->buf,
++ if (!del_lump(_m, hdr->body.s - _m->buf,
+ rt->nameaddr.name.s - hdr->body.s, 0)) {
+ LM_ERR("failed to remove Route HF\n");
+ return RR_ERROR;
+@@ -915,8 +916,10 @@ done:
+ status = RR_OB_DRIVEN;
+
+ /* run RR callbacks only if we have Route URI parameters */
+- if(routed_params.len > 0)
+- run_rr_callbacks( _m, &routed_params );
++ if(routed_params.len > 0) {
++ rparams = routed_params;
++ run_rr_callbacks( _m, &rparams );
++ }
+ return status;
+ }
+
+@@ -934,7 +937,7 @@ int loose_route(struct sip_msg* _m)
+ LM_DBG("There is no Route HF\n");
+ return -1;
+ }
+-
++
+ if (parse_sip_msg_uri(_m)<0) {
+ LM_ERR("failed to parse Request URI\n");
+ return -1;
+@@ -954,6 +957,70 @@ int loose_route(struct sip_msg* _m)
+ }
+ }
+
++/**
++ *
++ */
++int redo_route_params(sip_msg_t *msg)
++{
++ hdr_field_t *hdr;
++ sip_uri_t puri;
++ rr_t* rt;
++ str uri;
++ int uri_is_myself;
++
++ int redo = 0;
++
++ if(msg->first_line.type != SIP_REQUEST) {
++ return -1;
++ }
++
++ if(msg->route==NULL || msg->route->parsed==NULL) {
++ return -1;
++ }
++
++ /* check if the hooked params belong to the same message */
++ if (routed_msg_id != msg->id || routed_msg_pid != msg->pid) {
++ redo = 1;
++ }
++ if((redo==0) && (routed_params.s==NULL || routed_params.len<=0)) {
++ redo = 1;
++ }
++ if((redo==0) && (routed_params.s<msg->buf
++ || routed_params.s>msg->buf+msg->len)) {
++ redo = 1;
++ }
++ if(redo==1) {
++ hdr = msg->route;
++ rt = (rr_t*)hdr->parsed;
++ uri = rt->nameaddr.uri;
++
++ /* reset rr handling static vars for safety in error case */
++ routed_msg_id = 0;
++ routed_msg_pid = 0;
++
++ if (parse_uri(uri.s, uri.len, &puri) < 0) {
++ LM_ERR("failed to parse the first route URI (%.*s)\n",
++ uri.len, ZSW(uri.s));
++ return -1;
++ }
++
++ uri_is_myself = is_myself(&puri);
++
++ /* if the URI was added by me, remove it */
++ if (uri_is_myself>0) {
++ LM_DBG("Topmost route URI: '%.*s' is me\n",
++ uri.len, ZSW(uri.s));
++ /* set the hooks for the params */
++ routed_msg_id = msg->id;
++ routed_msg_pid = msg->pid;
++ routed_params = puri.params;
++ return 0;
++ } else {
++ return -1;
++ }
++ }
++ return 0;
++}
+
+ /*!
+ * \brief Check if the route hdr has the required parameter
+@@ -967,22 +1034,31 @@ int loose_route(struct sip_msg* _m)
+ * \param re compiled regular expression to be checked against the Route header parameters
+ * \return -1 on failure, 1 on success
+ */
+-int check_route_param(struct sip_msg * msg, regex_t* re)
++int check_route_param(sip_msg_t * msg, regex_t* re)
+ {
+ regmatch_t pmatch;
+ char bk;
+ str params;
++ str rruri;
+
+ /* check if the hooked params belong to the same message */
+- if (routed_msg_id != msg->id || routed_msg_pid != msg->pid)
++ if(redo_route_params(msg)<0) {
+ return -1;
++ }
+
+ /* check if params are present */
+- if ( !routed_params.s || !routed_params.len )
++ if ( !routed_params.s || routed_params.len<=0 ) {
+ return -1;
++ }
++ rruri = ((rr_t*)(msg->route->parsed))->nameaddr.uri;
+
+ /* include also the first ';' */
+- for( params=routed_params ; params.s[0]!=';' ; params.s--,params.len++ );
++ for( params=routed_params ;
++ params.s>rruri.s && params.s[0]!=';' ;
++ params.s--,params.len++ );
++
++ LM_DBG("route params checking against [%.*s] (orig: [%.*s])\n",
++ params.len, params.s, routed_params.len, routed_params.s);
+
+ /* do the well-known trick to convert to null terminted */
+ bk = params.s[params.len];
+@@ -1011,7 +1087,7 @@ int check_route_param(struct sip_msg * msg, regex_t* re)
+ * It might be an empty string if the parameter had no value.
+ * \return 0 if parameter was found (even if it has no value), -1 otherwise
+ */
+-int get_route_param( struct sip_msg *msg, str *name, str *val)
++int get_route_param(sip_msg_t *msg, str *name, str *val)
+ {
+ char *p;
+ char *end;
+@@ -1019,11 +1095,12 @@ int get_route_param( struct sip_msg *msg, str *name, str *val)
+ int quoted;
+
+ /* check if the hooked params belong to the same message */
+- if (routed_msg_id != msg->id)
++ if(redo_route_params(msg)<0) {
+ goto notfound;
++ }
+
+ /* check if params are present */
+- if ( !routed_params.s || !routed_params.len )
++ if ( !routed_params.s || routed_params.len<=0 )
+ goto notfound;
+
+ end = routed_params.s + routed_params.len;
+--
+2.8.1
+
diff --git a/debian/patches/upstream/0017-dialog-open-db-connection-from-rpc-processes.patch b/debian/patches/upstream/0017-dialog-open-db-connection-from-rpc-processes.patch
new file mode 100644
index 0000000..43e7f55
--- /dev/null
+++ b/debian/patches/upstream/0017-dialog-open-db-connection-from-rpc-processes.patch
@@ -0,0 +1,29 @@
+From 50da2ea87ceaabd2b9d6ef631c623cfcb3dcbdc2 Mon Sep 17 00:00:00 2001
+From: Daniel-Constantin Mierla <miconda at gmail.com>
+Date: Wed, 6 Jul 2016 15:48:58 +0200
+Subject: [PATCH] dialog: open db connection from rpc processes
+
+- might be requered by rpc commands when db realtime is set
+- reported by Dirk Teurlings
+
+(cherry picked from commit a7e7486b57f1b9d025f09c055a3dc360c131fa5b)
+---
+ modules/dialog/dialog.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/modules/dialog/dialog.c b/modules/dialog/dialog.c
+index 553715d..27734a3 100644
+--- a/modules/dialog/dialog.c
++++ b/modules/dialog/dialog.c
+@@ -743,7 +743,7 @@ static int child_init(int rank)
+ }
+
+ if ( ((dlg_db_mode==DB_MODE_REALTIME || dlg_db_mode==DB_MODE_DELAYED) &&
+- (rank>0 || rank==PROC_TIMER)) ||
++ (rank>0 || rank==PROC_TIMER || rank==PROC_RPC)) ||
+ (dlg_db_mode==DB_MODE_SHUTDOWN && (rank==PROC_MAIN)) ) {
+ if ( dlg_connect_db(&db_url) ) {
+ LM_ERR("failed to connect to database (rank=%d)\n",rank);
+--
+2.8.1
+
diff --git a/debian/patches/upstream/0018-tm-check-branch-uri-against-current-uri-when-decidin.patch b/debian/patches/upstream/0018-tm-check-branch-uri-against-current-uri-when-decidin.patch
new file mode 100644
index 0000000..7001802
--- /dev/null
+++ b/debian/patches/upstream/0018-tm-check-branch-uri-against-current-uri-when-decidin.patch
@@ -0,0 +1,29 @@
+From 0a274283514a34525daa471cf8e781fb339a870c Mon Sep 17 00:00:00 2001
+From: grumvalski <federico.cabiddu at gmail.com>
+Date: Thu, 7 Jul 2016 16:06:51 +0200
+Subject: [PATCH] tm: check branch uri against current uri when deciding if
+ append a new branch
+
+(cherry picked from commit 335e44635aa69ab73ec76f713a7d5ce7ce06748c)
+---
+ modules/tm/t_append_branches.c | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/modules/tm/t_append_branches.c b/modules/tm/t_append_branches.c
+index f38a0a2..f745e75 100644
+--- a/modules/tm/t_append_branches.c
++++ b/modules/tm/t_append_branches.c
+@@ -127,7 +127,9 @@ int t_append_branches(void) {
+ found = 0;
+ for (i=0; i<outgoings; i++) {
+ if (t->uac[i].ruid.len == ruid.len
+- && !memcmp(t->uac[i].ruid.s, ruid.s, ruid.len)) {
++ && !memcmp(t->uac[i].ruid.s, ruid.s, ruid.len)
++ && t->uac[i].uri.len == current_uri.len
++ && !memcmp(t->uac[i].uri.s, current_uri.s, current_uri.len)) {
+ LM_DBG("branch already added [%.*s]\n", ruid.len, ruid.s);
+ found = 1;
+ break;
+--
+2.8.1
+
diff --git a/debian/patches/upstream/0019-rtpengine-init-rtp-engine-sockets-array-after-alloca.patch b/debian/patches/upstream/0019-rtpengine-init-rtp-engine-sockets-array-after-alloca.patch
new file mode 100644
index 0000000..bcfba13
--- /dev/null
+++ b/debian/patches/upstream/0019-rtpengine-init-rtp-engine-sockets-array-after-alloca.patch
@@ -0,0 +1,59 @@
+From 9aae641cd6e9fcb28d1f4a7b1c9bb8be1adcf7ef Mon Sep 17 00:00:00 2001
+From: Daniel-Constantin Mierla <miconda at gmail.com>
+Date: Thu, 7 Jul 2016 14:51:24 +0200
+Subject: [PATCH] rtpengine: init rtp engine sockets array after allocation
+
+- it can result in closing the random values found in memory, which can
+ overlap with valid sockets, due to follow up execution of
+ build_rtpp_socks()
+- do not init sockets for PROC_MAIN (for for=yes) and PROC_INIT to avoid
+ duplicating sockets with child processed
+
+(cherry picked from commit d76761bf95a5745240d655ee63241b8d4652611d)
+---
+ modules/rtpengine/rtpengine.c | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+diff --git a/modules/rtpengine/rtpengine.c b/modules/rtpengine/rtpengine.c
+index 5fe83b0..afb9315 100644
+--- a/modules/rtpengine/rtpengine.c
++++ b/modules/rtpengine/rtpengine.c
+@@ -1809,6 +1809,7 @@ static int build_rtpp_socks(unsigned int current_rtpp_no) {
+ for (i = 0; i < rtpp_socks_size; i++) {
+ if (rtpp_socks[i] >= 0) {
+ close(rtpp_socks[i]);
++ rtpp_socks[i] = -1;
+ }
+ }
+
+@@ -1818,6 +1819,7 @@ static int build_rtpp_socks(unsigned int current_rtpp_no) {
+ LM_ERR("no more pkg memory for rtpp_socks\n");
+ return -1;
+ }
++ memset(rtpp_socks, -1, sizeof(int)*(rtpp_socks_size));
+
+ lock_get(rtpp_set_list->rset_head_lock);
+ for (rtpp_list = rtpp_set_list->rset_first; rtpp_list != 0;
+@@ -1911,6 +1913,11 @@ child_init(int rank)
+ if(!rtpp_set_list)
+ return 0;
+
++ /* do not init sockets for PROC_INIT and main process when fork=yes */
++ if(rank==PROC_INIT || (rank==PROC_MAIN && dont_fork==0)) {
++ return 0;
++ }
++
+ mypid = getpid();
+
+ lock_get(rtpp_no_lock);
+@@ -1921,6 +1928,7 @@ child_init(int rank)
+ if (!rtpp_socks) {
+ return -1;
+ }
++ memset(rtpp_socks, -1, sizeof(int)*(rtpp_socks_size));
+
+ // vector of pointers to queried nodes
+ queried_nodes_ptr = (struct rtpp_node**)pkg_malloc(queried_nodes_limit * sizeof(struct rtpp_node*));
+--
+2.8.1
+
diff --git a/debian/patches/upstream/0020-rtpproxy-init-rtpproxy-sockets-array-after-allocatio.patch b/debian/patches/upstream/0020-rtpproxy-init-rtpproxy-sockets-array-after-allocatio.patch
new file mode 100644
index 0000000..e8cdc39
--- /dev/null
+++ b/debian/patches/upstream/0020-rtpproxy-init-rtpproxy-sockets-array-after-allocatio.patch
@@ -0,0 +1,39 @@
+From 1a5e83216e8699cab3680ff321a62a9be7c3c85f Mon Sep 17 00:00:00 2001
+From: Daniel-Constantin Mierla <miconda at gmail.com>
+Date: Thu, 7 Jul 2016 14:53:28 +0200
+Subject: [PATCH] rtpproxy: init rtpproxy sockets array after allocation
+
+- do not init sockets for PROC_MAIN (for for=yes) and PROC_INIT to
+ avoid duplicating sockets with child processed
+
+(cherry picked from commit 0fbac693b4d3ed913b64c2d000f27a96903b7e09)
+---
+ modules/rtpproxy/rtpproxy.c | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/modules/rtpproxy/rtpproxy.c b/modules/rtpproxy/rtpproxy.c
+index bb644de..80be249 100644
+--- a/modules/rtpproxy/rtpproxy.c
++++ b/modules/rtpproxy/rtpproxy.c
+@@ -1007,6 +1007,10 @@ child_init(int rank)
+ if(rtpp_set_list==NULL )
+ return 0;
+
++ if(rank==PROC_INIT || (rank==PROC_MAIN && dont_fork==0)) {
++ return 0;
++ }
++
+ /* Iterate known RTP proxies - create sockets */
+ mypid = getpid();
+
+@@ -1015,6 +1019,7 @@ child_init(int rank)
+ LM_ERR("no more pkg memory\n");
+ return -1;
+ }
++ memset(rtpp_socks, -1, sizeof(int)*rtpp_no);
+
+ for(rtpp_list = rtpp_set_list->rset_first; rtpp_list != 0;
+ rtpp_list = rtpp_list->rset_next){
+--
+2.8.1
+
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-voip/kamailio.git
More information about the Pkg-voip-commits
mailing list