[Pkg-voip-commits] [kamailio] 01/04: add upstream fixes from 4.3 branch (Closes: #804422 #804276)

Victor Seva Lopez maniac-guest at moszumanska.debian.org
Tue Nov 10 13:52:53 UTC 2015


This is an automated email from the git hooks/post-receive script.

maniac-guest pushed a commit to branch master
in repository kamailio.

commit dd21fe357a9b816c6ecc3674444a16f73a7eaeb7
Author: Victor Seva <linuxmaniac at torreviejawireless.org>
Date:   Mon Nov 9 10:27:29 2015 +0100

    add upstream fixes from 4.3 branch (Closes: #804422 #804276)
---
 debian/patches/series                              |  23 ++
 ...ls-hooks-to-0-avoiding-fields-enumeration.patch |  29 +++
 ...d-number-of-columns-when-loading-urecord-.patch |  38 +++
 ...fixed-handling-of-dmq_ul.get_urecord_by_r.patch |  38 +++
 .../upstream/0010-dialog-Sanity-checks.patch       |  50 ++++
 .../patches/upstream/0011-uac-Sanity-checks.patch  |  43 ++++
 ...se-advertised-address-if-send-socket-has-.patch |  59 +++++
 ...to-add-text-in-Reason-header-for-local-ge.patch |  65 +++++
 ...sence-use-advertised-ip-for-local-contact.patch |  43 ++++
 ...auth-Minor-update-to-docs-spelling-errors.patch | 282 +++++++++++++++++++++
 ...mmary-taken-in-consideration-for-runtime-.patch |  36 +++
 ...al-Add-comment-about-lacking-IPv6-support.patch | 121 +++++++++
 ...-some-minor-typos-in-debug-error-messages.patch |  50 ++++
 ...0019-corex-detect-ipv6-for-send-functions.patch |  37 +++
 ...-don-t-free-pg-query-structure-in-store-r.patch |  28 ++
 ...-safety-check-to-see-if-hasing-is-over-no.patch |  37 +++
 ...xed-passed-buffer-size-in-suip2a-for-ipv6.patch |  39 +++
 ...aces-around-initializer-of-cancel-reason-.patch |  30 +++
 ...ed-default-buffers-size-for-rpc-responses.patch |  99 ++++++++
 ...ivert-stderr-when-searching-for-greadlink.patch |  32 +++
 ...core-parser-remove-inline-for-parse_param.patch |  43 ++++
 ...onsider-IPv6-brackets-when-checking-size-.patch |  36 +++
 ...src-and-dst-addresses-in-tcp-error-log-me.patch | 155 +++++++++++
 ...029-tls-check-for-support-of-SSLv3-method.patch |  32 +++
 ...fs-removed-option-minline-all-stringops-f.patch |  38 +++
 25 files changed, 1483 insertions(+)

diff --git a/debian/patches/series b/debian/patches/series
index 8e467d2..93e372f 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -4,6 +4,29 @@ upstream/0003-tm-fake-msg-and-environment-to-append-new-branches.patch
 upstream/0004-tsilo-unref-the-transaction-after-appending-new-bran.patch
 upstream/0005-textops-fix-leak-when-subst_hf-with-flag-f-is-used.patch
 upstream/0006-uac-uac.reg_dump-returns-an-array-rpc-result.patch
+upstream/0008-usrloc-fixed-number-of-columns-when-loading-urecord-.patch
+upstream/0009-dmq_usrloc-fixed-handling-of-dmq_ul.get_urecord_by_r.patch
+upstream/0010-dialog-Sanity-checks.patch
+upstream/0011-uac-Sanity-checks.patch
+upstream/0012-nathelper-use-advertised-address-if-send-socket-has-.patch
+upstream/0013-tm-support-to-add-text-in-Reason-header-for-local-ge.patch
+upstream/0014-presence-use-advertised-ip-for-local-contact.patch
+upstream/0015-auth-Minor-update-to-docs-spelling-errors.patch
+upstream/0016-core-mem_summary-taken-in-consideration-for-runtime-.patch
+upstream/0017-nat_traversal-Add-comment-about-lacking-IPv6-support.patch
+upstream/0018-evapi-fix-some-minor-typos-in-debug-error-messages.patch
+upstream/0019-corex-detect-ipv6-for-send-functions.patch
+upstream/0020-db_postgres-don-t-free-pg-query-structure-in-store-r.patch
+upstream/0021-db_postgres-safety-check-to-see-if-hasing-is-over-no.patch
+upstream/0022-core-fixed-passed-buffer-size-in-suip2a-for-ipv6.patch
+upstream/0023-tm-added-braces-around-initializer-of-cancel-reason-.patch
+upstream/0024-ctl-increased-default-buffers-size-for-rpc-responses.patch
+upstream/0025-kamdbctl-divert-stderr-when-searching-for-greadlink.patch
+upstream/0026-core-parser-remove-inline-for-parse_param.patch
+upstream/0027-nathelper-consider-IPv6-brackets-when-checking-size-.patch
+upstream/0028-core-print-src-and-dst-addresses-in-tcp-error-log-me.patch
+upstream/0029-tls-check-for-support-of-SSLv3-method.patch
+upstream/0030-Makefile.defs-removed-option-minline-all-stringops-f.patch
 no_lib64_on_64_bits.patch
 no_INSTALL_file.patch
 fix_export.patch
diff --git a/debian/patches/upstream/0007-tls-init-tls-hooks-to-0-avoiding-fields-enumeration.patch b/debian/patches/upstream/0007-tls-init-tls-hooks-to-0-avoiding-fields-enumeration.patch
new file mode 100644
index 0000000..01e959f
--- /dev/null
+++ b/debian/patches/upstream/0007-tls-init-tls-hooks-to-0-avoiding-fields-enumeration.patch
@@ -0,0 +1,29 @@
+From f699719fed8b1fffc653c272c01941730dab6d3e Mon Sep 17 00:00:00 2001
+From: Daniel-Constantin Mierla <miconda at gmail.com>
+Date: Tue, 20 Oct 2015 19:44:47 +0200
+Subject: [PATCH] tls: init tls hooks to {0}, avoiding fields enumeration
+
+- if a new field is added, then should be no longer needed to update
+  initialization
+
+(cherry picked from commit 92c7656a37549de0eed3621ec243022400f6c6c4)
+---
+ tls_hooks.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/tls_hooks.c b/tls_hooks.c
+index 92e709f..b46a429 100644
+--- a/tls_hooks.c
++++ b/tls_hooks.c
+@@ -28,7 +28,7 @@
+ 
+ #ifdef TLS_HOOKS
+ 
+-struct tls_hooks tls_hook= {0,0,0,0,0,0,0,0};
++struct tls_hooks tls_hook= {0};
+ 
+ static int tls_hooks_loaded=0;
+ 
+-- 
+2.6.2
+
diff --git a/debian/patches/upstream/0008-usrloc-fixed-number-of-columns-when-loading-urecord-.patch b/debian/patches/upstream/0008-usrloc-fixed-number-of-columns-when-loading-urecord-.patch
new file mode 100644
index 0000000..67746a4
--- /dev/null
+++ b/debian/patches/upstream/0008-usrloc-fixed-number-of-columns-when-loading-urecord-.patch
@@ -0,0 +1,38 @@
+From 60985a13878b9ec3b84b565c02be14927ba6357a Mon Sep 17 00:00:00 2001
+From: Daniel-Constantin Mierla <miconda at gmail.com>
+Date: Fri, 23 Oct 2015 14:15:54 +0200
+Subject: [PATCH] usrloc: fixed number of columns when loading urecord in db
+ mode 3
+
+- reported by GH#373
+
+(cherry picked from commit 922e5818b02b6d5e1f082e861f97bc8868f5ae57)
+---
+ modules/usrloc/udomain.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/modules/usrloc/udomain.c b/modules/usrloc/udomain.c
+index 2bb1707..63db924 100644
+--- a/modules/usrloc/udomain.c
++++ b/modules/usrloc/udomain.c
+@@ -609,7 +609,7 @@ urecord_t* db_load_urecord(db1_con_t* _c, udomain_t* _d, str *_aor)
+ 		return 0;
+ 	}
+ 
+-	if (ul_dbf.query(_c, keys, 0, vals, columns, (use_domain)?2:1, 16, order,
++	if (ul_dbf.query(_c, keys, 0, vals, columns, (use_domain)?2:1, 19, order,
+ 				&res) < 0) {
+ 		LM_ERR("db_query failed\n");
+ 		return 0;
+@@ -793,7 +793,7 @@ urecord_t* db_load_urecord_by_ruid(db1_con_t* _c, udomain_t* _d, str *_ruid)
+ 		return 0;
+ 	}
+ 
+-	if (ul_dbf.query(_c, keys, 0, vals, columns, 1, 18, order,
++	if (ul_dbf.query(_c, keys, 0, vals, columns, 1, 21, order,
+ 				&res) < 0) {
+ 		LM_ERR("db_query failed\n");
+ 		return 0;
+-- 
+2.6.2
+
diff --git a/debian/patches/upstream/0009-dmq_usrloc-fixed-handling-of-dmq_ul.get_urecord_by_r.patch b/debian/patches/upstream/0009-dmq_usrloc-fixed-handling-of-dmq_ul.get_urecord_by_r.patch
new file mode 100644
index 0000000..19c5bf8
--- /dev/null
+++ b/debian/patches/upstream/0009-dmq_usrloc-fixed-handling-of-dmq_ul.get_urecord_by_r.patch
@@ -0,0 +1,38 @@
+From 801d9cc900a7cdd954733012540299c7ca288007 Mon Sep 17 00:00:00 2001
+From: Daniel-Constantin Mierla <miconda at gmail.com>
+Date: Tue, 27 Oct 2015 11:44:06 +0100
+Subject: [PATCH] dmq_usrloc: fixed handling of dmq_ul.get_urecord_by_ruid()
+ response
+
+- manual backport of master branch commits: 13cde2b and eeb3c16 (GH#373)
+---
+ modules/dmq_usrloc/usrloc_sync.c | 10 +++++-----
+ 1 file changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/modules/dmq_usrloc/usrloc_sync.c b/modules/dmq_usrloc/usrloc_sync.c
+index 40e89d3..c3c7e89 100644
+--- a/modules/dmq_usrloc/usrloc_sync.c
++++ b/modules/dmq_usrloc/usrloc_sync.c
+@@ -197,14 +197,14 @@ void usrloc_get_all_ucontact(dmq_node_t* node)
+         memcpy( &aorhash, cp, sizeof(aorhash));
+         cp = (char*)cp + sizeof(aorhash);
+ 
++		r = 0;
++		ptr = 0;
+         res = dmq_ul.get_urecord_by_ruid(_d, aorhash, &ruid, &r, &ptr);
+-        aor = r->aor;
+-        if (res > 0) {
+-            LM_DBG("'%.*s' Not found in usrloc\n", aor.len, ZSW(aor.s));
+-            dmq_ul.release_urecord(r);
+-            dmq_ul.unlock_udomain(_d, &aor);
++        if (res < 0) {
++            LM_DBG("'%.*s' Not found in usrloc\n", ruid.len, ZSW(ruid.s));
+             continue;
+         }
++        aor = r->aor;
+         LM_DBG("- AoR: %.*s  AoRhash=%d  Flags=%d\n", aor.len, aor.s, aorhash, flags);
+ 
+         while (ptr) {
+-- 
+2.6.2
+
diff --git a/debian/patches/upstream/0010-dialog-Sanity-checks.patch b/debian/patches/upstream/0010-dialog-Sanity-checks.patch
new file mode 100644
index 0000000..27d126d
--- /dev/null
+++ b/debian/patches/upstream/0010-dialog-Sanity-checks.patch
@@ -0,0 +1,50 @@
+From 83938d2153d0d33f1e3248a9ae280dae38440855 Mon Sep 17 00:00:00 2001
+From: Stefan Mititelu <stefan.mititelu at 1and1.ro>
+Date: Tue, 3 Nov 2015 15:58:02 +0200
+Subject: [PATCH] dialog: Sanity checks
+
+Add NULL checks for the parse_dlg_rr_param().
+Segfault when 'did' parameter was empty in the Route header (e.g. 'did=').
+
+(cherry picked from commit 876787d977c46ffcb1288f5eb66e91145cba1061)
+---
+ modules/dialog/dlg_handlers.c | 22 ++++++++++++++++++++++
+ 1 file changed, 22 insertions(+)
+
+diff --git a/modules/dialog/dlg_handlers.c b/modules/dialog/dlg_handlers.c
+index 75dc86f..b20f795 100644
+--- a/modules/dialog/dlg_handlers.c
++++ b/modules/dialog/dlg_handlers.c
+@@ -970,7 +970,29 @@ static inline int parse_dlg_rr_param(char *p, char *end, int *h_entry, int *h_id
+ {
+ 	char *s;
+ 
++	/* sanity checks */
++	if (!p) {
++		LM_ERR("NULL start of parameter string");
++		return -1;
++	}
++
++	if (!end) {
++		LM_ERR("NULL end of parameter string");
++		return -1;
++	}
++
++	if (!h_entry) {
++		LM_ERR("NULL h_entry");
++		return -1;
++	}
++
++	if (!h_id) {
++		LM_ERR("NULL h_id");
++		return -1;
++	}
++
+ 	for ( s=p ; p<end && *p!=DLG_SEPARATOR ; p++ );
++
+ 	if (*p!=DLG_SEPARATOR) {
+ 		LM_ERR("malformed rr param '%.*s'\n", (int)(long)(end-s), s);
+ 		return -1;
+-- 
+2.6.2
+
diff --git a/debian/patches/upstream/0011-uac-Sanity-checks.patch b/debian/patches/upstream/0011-uac-Sanity-checks.patch
new file mode 100644
index 0000000..86c0874
--- /dev/null
+++ b/debian/patches/upstream/0011-uac-Sanity-checks.patch
@@ -0,0 +1,43 @@
+From a56e5980e572357f9d3c0152623850c34ddb8963 Mon Sep 17 00:00:00 2001
+From: Stefan Mititelu <stefan.mititelu at 1and1.ro>
+Date: Tue, 3 Nov 2015 13:08:47 +0200
+Subject: [PATCH] uac: Sanity checks
+
+Sanity checks for decode_uri(). Add NULL and len > 0 checks.
+Segfault when vsf parameter was empty in the Route: header (e.g 'vsf=').
+
+(cherry picked from commit d956f397c8cea4774e5941bdad8f76ecc44acdd5)
+---
+ modules/uac/replace.c | 16 ++++++++++++++++
+ 1 file changed, 16 insertions(+)
+
+diff --git a/modules/uac/replace.c b/modules/uac/replace.c
+index 1c30fe2..354b2f9 100644
+--- a/modules/uac/replace.c
++++ b/modules/uac/replace.c
+@@ -128,6 +128,22 @@ static inline int decode_uri( str *src , str *dst)
+ 	int i,j;
+ 	signed char c;
+ 
++	/* sanity checks */
++	if (!src) {
++		LM_ERR("NULL src\n");
++		return -1;
++	}
++
++	if (!dst) {
++		LM_ERR("NULL dst\n");
++		return -1;
++	}
++
++	if (!src->s || src->len == 0) {
++		LM_ERR("empty src\n");
++		return -1;
++	}
++
+ 	/* Count '-' at end and disregard them */
+ 	for( n=0,i=src->len-1; src->s[i]=='-'; i--)
+ 		n++;
+-- 
+2.6.2
+
diff --git a/debian/patches/upstream/0012-nathelper-use-advertised-address-if-send-socket-has-.patch b/debian/patches/upstream/0012-nathelper-use-advertised-address-if-send-socket-has-.patch
new file mode 100644
index 0000000..afbf627
--- /dev/null
+++ b/debian/patches/upstream/0012-nathelper-use-advertised-address-if-send-socket-has-.patch
@@ -0,0 +1,59 @@
+From c5a53e0f12430653f890534a1c140b84545f1ac0 Mon Sep 17 00:00:00 2001
+From: Daniel-Constantin Mierla <miconda at gmail.com>
+Date: Sun, 4 Oct 2015 06:28:39 +0200
+Subject: [PATCH] nathelper: use advertised address if send socket has one
+
+- reported by emanuel Buu, GH#352
+
+(cherry picked from commit 4da31d56f4b1e18fc4232c5174637c858c75e9db)
+---
+ modules/nathelper/sip_pinger.h | 20 ++++++++++++++++----
+ 1 file changed, 16 insertions(+), 4 deletions(-)
+
+diff --git a/modules/nathelper/sip_pinger.h b/modules/nathelper/sip_pinger.h
+index 295fb68..0ff60b1 100644
+--- a/modules/nathelper/sip_pinger.h
++++ b/modules/nathelper/sip_pinger.h
+@@ -123,10 +123,22 @@ static inline char* build_sipping(str *curi, struct socket_info* s, str *path,
+ 	static char buf[MAX_SIPPING_SIZE];
+ 	char *p;
+ 	int len;
++	str vaddr;
++	str vport;
++
++	if(s->useinfo.name.len>0)
++		vaddr = s->useinfo.name;
++	else
++		vaddr = s->address_str;
++
++	if(s->useinfo.port_no>0)
++		vport = s->useinfo.port_no_str;
++	else
++		vport = s->port_no_str;
+ 
+ 	if ( sipping_method.len + 1 + curi->len + s_len(" SIP/2.0"CRLF) +
+-		s_len("Via: SIP/2.0/UDP ") + s->address_str.len +
+-				1 + s->port_no_str.len + s_len(";branch=0") +
++		s_len("Via: SIP/2.0/UDP ") + vaddr.len +
++				1 + vport.len + s_len(";branch=0") +
+ 		(path->len ? (s_len(CRLF"Route: ") + path->len) : 0) +
+ 		s_len(CRLF"From: ") +  sipping_from.len + s_len(";tag=") +
+ 				ruid->len + 1 + 8 + 1 + 8 +
+@@ -149,12 +161,12 @@ static inline char* build_sipping(str *curi, struct socket_info* s, str *path,
+ 	if (s->address.af == AF_INET6) {	/* Via header IP is a IPv6 reference */
+ 		append_fix( p, "[");
+ 	}
+-	append_str( p, s->address_str.s, s->address_str.len);
++	append_str( p, vaddr.s, vaddr.len);
+ 	if (s->address.af == AF_INET6) {
+ 		append_fix( p, "]");
+ 	}
+ 	*(p++) = ':';
+-	append_str( p, s->port_no_str.s, s->port_no_str.len);
++	append_str( p, vport.s, vport.len);
+ 	if (path->len) {
+ 		append_fix( p, ";branch=0"CRLF"Route: ");
+ 		append_str( p, path->s, path->len);
+-- 
+2.6.2
+
diff --git a/debian/patches/upstream/0013-tm-support-to-add-text-in-Reason-header-for-local-ge.patch b/debian/patches/upstream/0013-tm-support-to-add-text-in-Reason-header-for-local-ge.patch
new file mode 100644
index 0000000..ffb01d5
--- /dev/null
+++ b/debian/patches/upstream/0013-tm-support-to-add-text-in-Reason-header-for-local-ge.patch
@@ -0,0 +1,65 @@
+From 6d3db65279e1e6bd7d45fe6ff4169e556883e21d Mon Sep 17 00:00:00 2001
+From: Daniel-Constantin Mierla <miconda at gmail.com>
+Date: Tue, 6 Oct 2015 17:53:15 +0200
+Subject: [PATCH] tm: support to add text in Reason header for local generated
+ CANCEL
+
+(cherry picked from commit 743fee551c833bd31f1bfdf1a4b422886243f8b6)
+---
+ modules/tm/t_cancel.c | 33 +++++++++++++++++++++++++++++++++
+ 1 file changed, 33 insertions(+)
+
+diff --git a/modules/tm/t_cancel.c b/modules/tm/t_cancel.c
+index 69c5525..ce18354 100644
+--- a/modules/tm/t_cancel.c
++++ b/modules/tm/t_cancel.c
+@@ -37,6 +37,36 @@
+ #include "t_hooks.h"
+ 
+ 
++typedef struct cancel_reason_map {
++	int code;
++	str text;
++} cancel_reason_map_t;
++
++static cancel_reason_map_t _cancel_reason_map[] = {
++	200, str_init("Answered elsewhere"),
++	0, {0, 0}
++};
++
++/**
++ *
++ */
++void cancel_reason_text(struct cancel_info* cancel_data)
++{
++	int i;
++
++	if(cancel_data->reason.cause<=0
++			|| cancel_data->reason.u.text.s!=NULL) return;
++
++	for(i=0; _cancel_reason_map[i].text.s!=0; i++) {
++		if(_cancel_reason_map[i].code==cancel_data->reason.cause) {
++			cancel_data->reason.u.text = _cancel_reason_map[i].text;
++			return;
++		}
++	}
++
++	return;
++}
++
+ /** Prepare to cancel a transaction.
+  * Determine which branches should be canceled and prepare them (internally
+  * mark them as "cancel in progress", see prepare_cancel_branch()).
+@@ -87,6 +117,9 @@ int cancel_uacs( struct cell *t, struct cancel_info* cancel_data, int flags)
+ 	int r;
+ 
+ 	ret=0;
++
++	cancel_reason_text(cancel_data);
++
+ 	/* cancel pending client transactions, if any */
+ 	for( i=0 ; i<t->nr_of_outgoings ; i++ ) 
+ 		if (cancel_data->cancel_bitmap & (1<<i)){
+-- 
+2.6.2
+
diff --git a/debian/patches/upstream/0014-presence-use-advertised-ip-for-local-contact.patch b/debian/patches/upstream/0014-presence-use-advertised-ip-for-local-contact.patch
new file mode 100644
index 0000000..cbf214f
--- /dev/null
+++ b/debian/patches/upstream/0014-presence-use-advertised-ip-for-local-contact.patch
@@ -0,0 +1,43 @@
+From eef390eaefd9286feaae1505d566e4e41fb61e30 Mon Sep 17 00:00:00 2001
+From: lazedo <luis.azedo at factorlusitano.com>
+Date: Wed, 7 Oct 2015 11:39:37 -0700
+Subject: [PATCH] presence: use advertised ip for local contact (cherry picked
+ from commit 6a498f713a2522e18bed96dc4d1f361008a95502)
+
+---
+ modules/presence/utils_func.h | 17 ++++++++++-------
+ 1 file changed, 10 insertions(+), 7 deletions(-)
+
+diff --git a/modules/presence/utils_func.h b/modules/presence/utils_func.h
+index 866df1b..6592375 100644
+--- a/modules/presence/utils_func.h
++++ b/modules/presence/utils_func.h
+@@ -124,15 +124,18 @@ static inline int ps_fill_local_contact(struct sip_msg* msg, str *contact)
+ 		goto error;
+ 	}	
+ 	
+-	ip.s= ip_addr2a(&msg->rcv.dst_ip);
+-	if(ip.s== NULL)
+-	{
+-		LM_ERR("transforming ip_addr to ascii\n");
+-		goto error;
++	if(msg->rcv.bind_address->useinfo.name.len>0) {
++		ip = msg->rcv.bind_address->useinfo.name;
++	} else {
++		ip = msg->rcv.bind_address->address_str;
+ 	}
+-	ip.len= strlen(ip.s);
+-	port = msg->rcv.dst_port;
+ 
++	if(msg->rcv.bind_address->useinfo.port_no>0) {
++		port = msg->rcv.bind_address->useinfo.port_no;
++	} else {
++		port = msg->rcv.bind_address->port_no;
++	}
++	
+ 	if(strncmp(ip.s, "sip:", 4)!=0)
+ 	{
+ 		strncpy(contact->s, "sip:", 4);
+-- 
+2.6.2
+
diff --git a/debian/patches/upstream/0015-auth-Minor-update-to-docs-spelling-errors.patch b/debian/patches/upstream/0015-auth-Minor-update-to-docs-spelling-errors.patch
new file mode 100644
index 0000000..c137b79
--- /dev/null
+++ b/debian/patches/upstream/0015-auth-Minor-update-to-docs-spelling-errors.patch
@@ -0,0 +1,282 @@
+From ca09891f79facdc7f557ecacb31e7346e545e4a4 Mon Sep 17 00:00:00 2001
+From: "Olle E. Johansson" <oej at edvina.net>
+Date: Sun, 11 Oct 2015 19:26:46 +0200
+Subject: [PATCH] auth Minor update to docs, spelling errors
+
+(cherry picked from commit a0f82365012a7980c77b076d2e48f8a38cb63742)
+---
+ modules/auth/README              | 56 +++++++++++++-------------
+ modules/auth/doc/auth_params.xml | 85 ++++++++++++++++++++--------------------
+ 2 files changed, 70 insertions(+), 71 deletions(-)
+
+diff --git a/modules/auth/README b/modules/auth/README
+index 71b990a..3dc6361 100644
+--- a/modules/auth/README
++++ b/modules/auth/README
+@@ -171,17 +171,17 @@ Chapter 1. Admin Guide
+ 
+    These three module parameters control which optional integrity checks
+    will be performed on the SIP message carrying digest response during
+-   digest authentication. auth_check_register controls integrity checks to
+-   be performed on REGISTER messages, auth_checks_no_dlg controls which
+-   optional integrity checks will be performed on SIP requests that have
+-   no To header field or no To tag (in other words the requests either
+-   establishing or outside dialogs). auth_checks_in_dlg controls which
+-   integrity checks will be performed on SIP requests within dialogs, such
+-   as BYE or re-INVITE. The default value for all three parameters is 0
+-   (old behaviour, no extra checks). The set of integrity checks that can
+-   be performed on REGISTERs is typically different from sets of integrity
+-   checks that can be performed for other SIP request types, hence we have
+-   three independent module parameters.
++   SIP MD5 digest authentication. auth_check_register controls integrity
++   checks to be performed on REGISTER messages, auth_checks_no_dlg
++   controls which optional integrity checks will be performed on SIP
++   requests that have no To header field or no To tag (in other words the
++   requests either establishing or outside dialogs). auth_checks_in_dlg
++   controls which integrity checks will be performed on SIP requests
++   within dialogs, such as BYE or re-INVITE. The default value for all
++   three parameters is 0 (old behaviour, no extra checks). The set of
++   integrity checks that can be performed on REGISTERs is typically
++   different from sets of integrity checks that can be performed for other
++   SIP request types, hence we have three independent module parameters.
+ 
+    Without the extra checks the nonce will protect only against expired
+    values. Some reply attacks are still possible in the expire "window". A
+@@ -194,24 +194,24 @@ Chapter 1. Admin Guide
+    (see nonce_expire) and an MD5 over it and some secret (the MD5 is used
+    to make sure that nobody tampers with the nonce expire time).
+ 
+-   When the extra checks are enabled, the nonce will include and extra MD5
++   When the extra checks are enabled, the nonce will include an extra MD5
+    over the selected part/parts of the message (see below) and some other
+    secret. This will be used to check if the selected part of the message
+    is the same when an UA tries to reuse the nonce, thus protecting or
+    severely limiting reply attacks.
+ 
+    The possible flag values for all three parameters are:
+-     * 1 for checking if the message uri changed (uses the whole uri)
++     * 1 for checking if the message URI changed (uses the whole URI)
+      * 2 for checking the callid
+-     * 4 for checking the from tag
+-     * 8 for checking the source ip (see nonce.h).
++     * 4 for checking the From tag
++     * 8 for checking the source IP address (see nonce.h).
+ 
+-   For example setting auth_checks_register to 3 would check if the callid
+-   or the request uri changed from the REGISTER message for which the
+-   original nonce was generated (this would allow nonce reuse only within
+-   the same UA and for the expire time). Note that enabling the extra
+-   checks will limit nonce caching by UAs, requiring extra challenges and
+-   roundtrips, but will provide much better protection.
++   As an example setting auth_checks_register to 3 would check if the
++   callid or the request uri changed from the REGISTER message for which
++   the original nonce was generated (this would allow nonce reuse only
++   within the same UA and for the expire time). Note that enabling the
++   extra checks will limit nonce caching by UAs, requiring extra
++   challenges and roundtrips, but will provide much better protection.
+ 
+ Warning
+ 
+@@ -599,7 +599,7 @@ modparam("auth", "nonce_auth_max_drift", 1)   # set max drift to 1 s
+    If set to 1, www_challenge() and proxy_challenge() functions send reply
+    statelessly no matter if transaction exists or not. If set to 0
+    (default), reply is sent statefully if transaction exists and
+-   stelelessly otherwise.
++   statelessly otherwise.
+ 
+    Example 1.13. force_stateless_reply example
+ ...
+@@ -608,12 +608,12 @@ modparam("auth", "force_stateless_reply", 1)
+ 
+ 3.16. realm_prefix (string)
+ 
+-   Prefix to be automatically strip from realm. As an alternative to SRV
+-   records (not all SIP clients support SRV lookup), a subdomain of the
+-   master domain can be defined for SIP purposes (like sip.mydomain.net
+-   pointing to same IP address as the SRV record for mydomain.net). By
+-   ignoring the realm_prefix "sip.", at authentication, sip.mydomain.net
+-   will be equivalent to mydomain.net .
++   Prefix to be automatically stripped from the realm. As an alternative
++   to SRV records (not all SIP clients support SRV lookup), a subdomain of
++   the master domain can be defined for SIP purposes (like
++   sip.mydomain.net pointing to same IP address as the SRV record for
++   mydomain.net). By ignoring the realm_prefix "sip.", at authentication,
++   sip.example.com will be equivalent to example.com .
+ 
+    Default value is empty string.
+ 
+diff --git a/modules/auth/doc/auth_params.xml b/modules/auth/doc/auth_params.xml
+index 3450ec1..19ae0c2 100644
+--- a/modules/auth/doc/auth_params.xml
++++ b/modules/auth/doc/auth_params.xml
+@@ -24,28 +24,28 @@
+ 		<title><varname>auth_checks_in_dlg</varname> (flags)</title>
+ 	<para>
+ 		These three module parameters control which optional integrity
+-        checks will be performed on the SIP message carrying digest response
+-        during digest authentication. <varname>auth_check_register</varname>
+-        controls integrity checks to be performed on REGISTER messages,
+-        <varname>auth_checks_no_dlg</varname> controls which optional
+-        integrity checks will be performed on SIP requests that have no To
+-        header field or no To tag (in other words the requests either
+-        establishing or outside
+-        dialogs). <varname>auth_checks_in_dlg</varname> controls which
+-        integrity checks will be performed on SIP requests within dialogs,
+-        such as BYE or re-INVITE. The default value for all three parameters
+-        is 0 (old behaviour, no extra checks). The set of integrity checks
+-        that can be performed on REGISTERs is typically different from sets of
+-        integrity checks that can be performed for other SIP request types,
+-        hence we have three independent module parameters.
++        	checks will be performed on the SIP message carrying digest response
++        	during SIP MD5 digest authentication. <varname>auth_check_register</varname>
++        	controls integrity checks to be performed on REGISTER messages,
++        	<varname>auth_checks_no_dlg</varname> controls which optional
++        	integrity checks will be performed on SIP requests that have no To
++        	header field or no To tag (in other words the requests either
++        	establishing or outside dialogs).
++		<varname>auth_checks_in_dlg</varname> controls which
++        	integrity checks will be performed on SIP requests within dialogs,
++        	such as BYE or re-INVITE. The default value for all three parameters
++        	is 0 (old behaviour, no extra checks). The set of integrity checks
++        	that can be performed on REGISTERs is typically different from sets of
++        	integrity checks that can be performed for other SIP request types,
++        	hence we have three independent module parameters.
+ 	</para>
+ 	<para>
+ 		Without the extra checks the nonce will protect only against expired
+ 		values. Some reply attacks are still possible in the expire "window".
+-		A possible workaround is to always force qop 
+-		 authentication and always check the uri from the authorization
+-		 header, but this would not work if an upstream proxy rewrites the uri
+-		 and it will also not work with a lot of UA implementations.
++		A possible workaround is to always force qop authentication and 
++		always check the uri from the authorization header, but this would
++		not work if an upstream proxy rewrites the uri
++		and it will also not work with a lot of UA implementations.
+ 	</para>
+ 	<para>
+ 		In this case the nonce value will be used only to hold
+@@ -54,7 +54,7 @@
+ 		tampers with the nonce expire time).
+ 	</para>
+ 	<para>
+-		When the extra checks are enabled, the nonce will include and extra
++		When the extra checks are enabled, the nonce will include an extra
+ 		MD5 over the selected part/parts of the message (see below) and some 
+ 		other secret. This will be used to check if the selected part of 
+ 		the message is the same when an UA tries to reuse the nonce, thus 
+@@ -65,28 +65,27 @@
+ 		<itemizedlist>
+ 			<listitem><para>
+ 				<emphasis>1</emphasis> for checking if the message
+-				uri changed (uses the whole uri)
++				URI changed (uses the whole URI)
+ 			</para></listitem>
+ 			<listitem><para>
+ 				<emphasis>2</emphasis> for checking the callid
+ 			</para></listitem>
+ 			<listitem><para>
+-				<emphasis>4</emphasis> for checking the from tag
++				<emphasis>4</emphasis> for checking the From tag
+ 			</para></listitem>
+ 			<listitem><para>
+-				<emphasis>8</emphasis> for checking the source ip
++				<emphasis>8</emphasis> for checking the source IP address
+ 				(see nonce.h).
+ 			</para></listitem>
+ 		</itemizedlist>
+ 	</para>
+ 	<para>
+-		For example setting
+-		 <varname>auth_checks_register</varname> to 3 would check if the
+-		 callid or the request uri changed from the REGISTER message for which
+-		 the original nonce was generated (this would allow nonce reuse only
+-		 within the same UA and for the expire time).  Note that enabling
+-		 the extra checks will limit nonce caching by UAs, requiring extra
+-		 challenges and roundtrips, but will provide much better protection.
++		As an example setting <varname>auth_checks_register</varname> to 3
++		would check if the callid or the request uri changed from the REGISTER
++		message for which the original nonce was generated (this would allow nonce reuse only
++		within the same UA and for the expire time).  Note that enabling
++		the extra checks will limit nonce caching by UAs, requiring extra
++		challenges and roundtrips, but will provide much better protection.
+ 	</para>
+ 	<warning><para>
+ 		Do not enable the from tag check (4) for REGISTERs
+@@ -155,7 +154,7 @@ modparam("auth", "auth_checks_in_dlg", 15)
+ 		The possible values are: "auth", "auth-int" and "" (unset).
+ 	</para>
+ 	<para>
+-	    The default value is not-set ("").
++		The default value is not-set ("").
+ 	</para>
+ 	<para>
+ 		See also:
+@@ -231,12 +230,12 @@ modparam("auth", "qop", "auth")   # set qop=auth
+ 	</para>
+ 	<para>
+ 		See also: 
+-					<varname>qop</varname>,
+-					<varname>nc_array_size</varname>,
+-					<varname>nc_array_order</varname>,
+-					<varname>nid_pool_no</varname>,
+-					<varname>nonce_expire</varname>.
+-					<varname>one_time_nonce</varname>.
++			<varname>qop</varname>,
++			<varname>nc_array_size</varname>,
++			<varname>nc_array_order</varname>,
++			<varname>nid_pool_no</varname>,
++			<varname>nonce_expire</varname>.
++			<varname>one_time_nonce</varname>.
+ 	</para>
+ 	<example>
+ 	    <title>nonce_count example</title>
+@@ -302,8 +301,8 @@ route{
+ 		in the first reponse to a challenge. All the messages will be 
+ 		challenged, even retransmissions. Stateful mode should be used, to
+ 		catch retransmissions before the authentication checks (using
+-		 <function>t_newtran()</function> before the authentication checks
+-		 and sending all the replies with <function>t_reply()</function>).
++		<function>t_newtran()</function> before the authentication checks
++		and sending all the replies with <function>t_reply()</function>).
+ 	</para>
+ 	<para>
+ 		<varname>one_time_nonce</varname> provides enhanced replay protections
+@@ -342,7 +341,7 @@ route{
+ 		<varname>one_time_nonce</varname> checks should work flawlessly.
+ 	</para>
+ 	<para>
+-	    The default value is 0 (off).
++		The default value is 0 (off).
+ 	</para>
+ 	<para>
+ 		See also:
+@@ -645,7 +644,7 @@ modparam("auth", "nonce_auth_max_drift", 1)   # set max drift to 1 s
+ 		<function>proxy_challenge()</function>
+ 		functions send reply statelessly no matter if transaction
+                 exists or not.  If set to 0 (default), reply is sent statefully
+-		if transaction exists and stelelessly otherwise.
++		if transaction exists and statelessly otherwise.
+ 	</para>
+ 	<example>
+ 	    <title>force_stateless_reply example</title>
+@@ -660,13 +659,13 @@ modparam("auth", "force_stateless_reply", 1)
+ 	<section id="auth.p.realm_prefix">
+ 		<title><varname>realm_prefix</varname> (string)</title>
+ 		<para>
+-			Prefix to be automatically strip from realm. As an alternative to
++			Prefix to be automatically stripped from the realm. As an alternative to
+ 			SRV records (not all SIP clients support SRV lookup), a subdomain
+ 			of the master domain can be defined for SIP purposes (like 
+ 			sip.mydomain.net pointing to same IP address as the SRV
+ 			record for mydomain.net). By ignoring the realm_prefix 
+-			<quote>sip.</quote>, at authentication, sip.mydomain.net will be
+-			equivalent to mydomain.net .
++			<quote>sip.</quote>, at authentication, sip.example.com will be
++			equivalent to example.com .
+ 		</para>
+ 		<para>
+ 		Default value is empty string.
+-- 
+2.6.2
+
diff --git a/debian/patches/upstream/0016-core-mem_summary-taken-in-consideration-for-runtime-.patch b/debian/patches/upstream/0016-core-mem_summary-taken-in-consideration-for-runtime-.patch
new file mode 100644
index 0000000..685dfed
--- /dev/null
+++ b/debian/patches/upstream/0016-core-mem_summary-taken-in-consideration-for-runtime-.patch
@@ -0,0 +1,36 @@
+From bf236d1892abdc3e27dc01d84eca67cd1b858156 Mon Sep 17 00:00:00 2001
+From: Daniel-Constantin Mierla <miconda at gmail.com>
+Date: Sun, 11 Oct 2015 19:37:54 +0200
+Subject: [PATCH] core: mem_summary taken in consideration for runtime pkg dump
+ callback
+
+(cherry picked from commit 02dc876cc6d8e78bfc26c4c2318814aec22c4498)
+---
+ pt.c | 11 +++++++++--
+ 1 file changed, 9 insertions(+), 2 deletions(-)
+
+diff --git a/pt.c b/pt.c
+index 2c65250..348a74d 100644
+--- a/pt.c
++++ b/pt.c
+@@ -528,8 +528,15 @@ void mem_dump_pkg_cb(str *gname, str *name)
+ 		   possible race with a parallel cfg_set */
+ 		((struct cfg_group_core*)core_cfg)->memlog=memlog;
+ 
+-		LOG(memlog, "Memory status (pkg) of process %d:\n", my_pid());
+-		pkg_status();
++		if (cfg_get(core, core_cfg, mem_summary) & 1) {
++			LOG(memlog, "Memory status (pkg) of process %d:\n", my_pid());
++			pkg_status();
++		}
++		if (cfg_get(core, core_cfg, mem_summary) & 4) {
++			LOG(memlog, "Memory still-in-use summary (pkg) of process %d:\n",
++					my_pid());
++			pkg_sums();
++		}
+ 
+ 		((struct cfg_group_core*)core_cfg)->memlog=old_memlog;
+ 	}
+-- 
+2.6.2
+
diff --git a/debian/patches/upstream/0017-nat_traversal-Add-comment-about-lacking-IPv6-support.patch b/debian/patches/upstream/0017-nat_traversal-Add-comment-about-lacking-IPv6-support.patch
new file mode 100644
index 0000000..ab1b452
--- /dev/null
+++ b/debian/patches/upstream/0017-nat_traversal-Add-comment-about-lacking-IPv6-support.patch
@@ -0,0 +1,121 @@
+From 67885bd0e5fd56b5dd7d4bb6f8bb7113bc1ea559 Mon Sep 17 00:00:00 2001
+From: "Olle E. Johansson" <oej at edvina.net>
+Date: Mon, 19 Oct 2015 09:11:20 +0200
+Subject: [PATCH] nat_traversal Add comment about lacking IPv6 support
+
+(cherry picked from commit cc8ff059d362e0c805de2067d73f64cbd12acdb8)
+---
+ modules/nat_traversal/README                      | 20 +++++++++++---------
+ modules/nat_traversal/doc/nat_traversal_admin.xml |  2 ++
+ 2 files changed, 13 insertions(+), 9 deletions(-)
+
+diff --git a/modules/nat_traversal/README b/modules/nat_traversal/README
+index 93ee58b..63a0a51 100644
+--- a/modules/nat_traversal/README
++++ b/modules/nat_traversal/README
+@@ -10,7 +10,7 @@ Dan Pascu
+ 
+    <dan at ag-projects.com>
+ 
+-   Copyright © 2008 Dan Pascu
++   Copyright � 2008 Dan Pascu
+      __________________________________________________________________
+ 
+    Table of Contents
+@@ -139,6 +139,8 @@ Chapter 1. Admin Guide
+    SIP proxies may be involved in handling registration and routing and
+    where the incoming and outgoing paths may not necessarily be the same,
+    or where the routing path may even change between consecutive dialogs.
++   The nat_traversal functionality is built primarily for IPv4 NAT
++   handling and hasn't been adapted to support IPv6 session keepalives.
+ 
+ 2. Keepalive functionality
+ 
+@@ -405,7 +407,7 @@ Chapter 1. Admin Guide
+    each endpoint will receive exactly one keepalive message. A negative
+    value or zero will disable the keepalive functionality.
+ 
+-   Default value is “60”.
++   Default value is "60".
+ 
+    Example 1.1. Setting the keepalive_interval parameter
+ ...
+@@ -418,7 +420,7 @@ modparam("nat_traversal", "keepalive_interval", 90)
+    for this purpose are NOTIFY and OPTIONS. NOTIFY generates smaller
+    replies from user agents, but they are almost entirely negative
+    replies. Apparently almost none of the user agents understand that the
+-   purpose of the NOTIFY with a “keep-alive” event is to keep NAT open,
++   purpose of the NOTIFY with a "keep-alive" event is to keep NAT open,
+    even though many user agents send such NOTIFY requests themselves.
+    However this does not affect the result at all, since the purpose is to
+    trigger a response from the user agent behind NAT, positive or negative
+@@ -433,7 +435,7 @@ modparam("nat_traversal", "keepalive_interval", 90)
+    times bigger than negative replies or replies to NOTIFY requests. For
+    this reason the default value for the used method is NOTIFY.
+ 
+-   Default value is “NOTIFY”.
++   Default value is "NOTIFY".
+ 
+    Example 1.2. Setting the keepalive_method parameter
+ ...
+@@ -448,7 +450,7 @@ modparam("nat_traversal", "keepalive_method", "OPTIONS")
+    keepalive message, which is the same interface on which the request
+    that triggered keepalive functionality arrived.
+ 
+-   Default value is “sip:keepalive at proxy_ip” with proxy_ip being the
++   Default value is "sip:keepalive at proxy_ip" with proxy_ip being the
+    actual IP of the outgoing interface.
+ 
+    Example 1.3. Setting the keepalive_from parameter
+@@ -487,7 +489,7 @@ MyHeader: some_value\r\n")
+    case it will store it in the Kamailio working directory, or an absolute
+    path.
+ 
+-   Default value is undefined “keepalive_state”.
++   Default value is undefined "keepalive_state".
+ 
+    Example 1.5. Setting the keepalive_state_file parameter
+ ...
+@@ -501,7 +503,7 @@ tate")
+    5.2. fix_contact()
+    5.3. nat_keepalive()
+ 
+-5.1.  client_nat_test(type)
++5.1. client_nat_test(type)
+ 
+    Check if the client is behind NAT. What tests are performed is
+    specified by the type parameter which is an integer given by the sum of
+@@ -531,7 +533,7 @@ if (client_nat_test("3")) {
+ }
+ ...
+ 
+-5.2.  fix_contact()
++5.2. fix_contact()
+ 
+    Will replace the IP and port in the Contact header with the IP and port
+    the SIP message was received from. Usually called after a succesful
+@@ -547,7 +549,7 @@ if (client_nat_test("3")) {
+ }
+ ...
+ 
+-5.3.  nat_keepalive()
++5.3. nat_keepalive()
+ 
+    Trigger keepalive functionality for the source address of the request.
+    When called it only sets some internal flags, which will trigger later
+diff --git a/modules/nat_traversal/doc/nat_traversal_admin.xml b/modules/nat_traversal/doc/nat_traversal_admin.xml
+index d796d6c..a5c61bf 100644
+--- a/modules/nat_traversal/doc/nat_traversal_admin.xml
++++ b/modules/nat_traversal/doc/nat_traversal_admin.xml
+@@ -29,6 +29,8 @@
+       SIP proxies may be involved in handling registration and routing and
+       where the incoming and outgoing paths may not necessarily be the same,
+       or where the routing path may even change between consecutive dialogs.
++      The nat_traversal functionality is built primarily for IPv4 NAT handling
++      and hasn't been adapted to support IPv6 session keepalives.
+     </para>
+   </section>
+   
+-- 
+2.6.2
+
diff --git a/debian/patches/upstream/0018-evapi-fix-some-minor-typos-in-debug-error-messages.patch b/debian/patches/upstream/0018-evapi-fix-some-minor-typos-in-debug-error-messages.patch
new file mode 100644
index 0000000..f6af87f
--- /dev/null
+++ b/debian/patches/upstream/0018-evapi-fix-some-minor-typos-in-debug-error-messages.patch
@@ -0,0 +1,50 @@
+From 3dc9dd21708d3abe9db888dd0ae2ab49270a82d8 Mon Sep 17 00:00:00 2001
+From: "Olle E. Johansson" <oej at edvina.net>
+Date: Tue, 20 Oct 2015 20:52:10 +0200
+Subject: [PATCH] evapi fix some minor typos in debug/error messages
+
+(cherry picked from commit 84d75d43c17b4773bb15a80c1a1f33a47424d858)
+---
+ modules/evapi/evapi_mod.c | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/modules/evapi/evapi_mod.c b/modules/evapi/evapi_mod.c
+index eeafc21..146c9d2 100644
+--- a/modules/evapi/evapi_mod.c
++++ b/modules/evapi/evapi_mod.c
+@@ -114,12 +114,12 @@ static int mod_init(void)
+ 
+ 	/* init faked sip msg */
+ 	if(faked_msg_init()<0) {
+-		LM_ERR("failed to init faked sip msg\n");
++		LM_ERR("failed to init faked sip message\n");
+ 		return -1;
+ 	}
+ 
+ 	if(load_tm_api( &tmb ) < 0) {
+-		LM_INFO("cannot load the TM-functions - async relay disabled\n");
++		LM_INFO("cannot load the TM module functions - async relay disabled\n");
+ 		memset(&tmb, 0, sizeof(tm_api_t));
+ 	}
+ 
+@@ -180,7 +180,7 @@ static int child_init(int rank)
+ 		/* main function for dispatcher */
+ 		evapi_close_notify_sockets_child();
+ 		if(evapi_run_dispatcher(_evapi_bind_addr, _evapi_bind_port)<0) {
+-			LM_ERR("failed to initialize disptacher process\n");
++			LM_ERR("failed to initialize evapi dispatcher process\n");
+ 			return -1;
+ 		}
+ 	}
+@@ -276,7 +276,7 @@ static int w_evapi_async_relay(sip_msg_t *msg, char *evdata, char *p2)
+ 	}
+ 	if(tmb.t_suspend(msg, &tindex, &tlabel)<0)
+ 	{
+-		LM_ERR("failed to suppend request processing\n");
++		LM_ERR("failed to suspend request processing\n");
+ 		return -1;
+ 	}
+ 
+-- 
+2.6.2
+
diff --git a/debian/patches/upstream/0019-corex-detect-ipv6-for-send-functions.patch b/debian/patches/upstream/0019-corex-detect-ipv6-for-send-functions.patch
new file mode 100644
index 0000000..18b6934
--- /dev/null
+++ b/debian/patches/upstream/0019-corex-detect-ipv6-for-send-functions.patch
@@ -0,0 +1,37 @@
+From 4fdd11699c83f2e4c787d210ca08eb3ec2fb559a Mon Sep 17 00:00:00 2001
+From: Daniel-Constantin Mierla <miconda at gmail.com>
+Date: Wed, 21 Oct 2015 09:49:38 +0200
+Subject: [PATCH] corex: detect ipv6 for send*() functions
+
+(cherry picked from commit 027495fb6ac7c8f50ff9945c209bc9f7ac98d991)
+---
+ modules/corex/corex_lib.c | 10 ++++++----
+ 1 file changed, 6 insertions(+), 4 deletions(-)
+
+diff --git a/modules/corex/corex_lib.c b/modules/corex/corex_lib.c
+index dcbe550..21593f5 100644
+--- a/modules/corex/corex_lib.c
++++ b/modules/corex/corex_lib.c
+@@ -254,13 +254,15 @@ int corex_send(sip_msg_t *msg, gparam_t *pu, enum sip_protos proto)
+ 			ret=E_BUG;
+ 			goto error;
+ 		}
+-	}
+-	else
+-	{
++	} else {
+ 		u = &next_hop;
+ 		u->port_no = 5060;
+ 		u->host = dest;
+-		p = memchr(dest.s, ':', dest.len);
++		p = dest.s;
++		/* detect ipv6 */
++		p = memchr(p, ']', dest.len);
++		if (p) p++;
++		p = memchr(p, ':', dest.len);
+ 		if (p)
+ 		{
+ 			u->host.len = p - dest.s;
+-- 
+2.6.2
+
diff --git a/debian/patches/upstream/0020-db_postgres-don-t-free-pg-query-structure-in-store-r.patch b/debian/patches/upstream/0020-db_postgres-don-t-free-pg-query-structure-in-store-r.patch
new file mode 100644
index 0000000..23c2722
--- /dev/null
+++ b/debian/patches/upstream/0020-db_postgres-don-t-free-pg-query-structure-in-store-r.patch
@@ -0,0 +1,28 @@
+From 4dc766a2083391b1870d34f8ee9575088b9e8e69 Mon Sep 17 00:00:00 2001
+From: Daniel-Constantin Mierla <miconda at gmail.com>
+Date: Thu, 22 Oct 2015 23:08:44 +0200
+Subject: [PATCH] db_postgres: don't free pg query structure in store result
+ function
+
+- it is done when freeing the result
+
+(cherry picked from commit 56cd7a0d38c8bbee6cc3e981b7a2b78b6d47257d)
+---
+ modules/db_postgres/km_dbase.c | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/modules/db_postgres/km_dbase.c b/modules/db_postgres/km_dbase.c
+index 50ffd7f..816a512 100644
+--- a/modules/db_postgres/km_dbase.c
++++ b/modules/db_postgres/km_dbase.c
+@@ -602,7 +602,6 @@ int db_postgres_store_result(const db1_con_t* _con, db1_res_t** _r)
+ 	}
+ 
+ done:
+-	db_postgres_free_query(_con);
+ 	return (rc);
+ }
+ 
+-- 
+2.6.2
+
diff --git a/debian/patches/upstream/0021-db_postgres-safety-check-to-see-if-hasing-is-over-no.patch b/debian/patches/upstream/0021-db_postgres-safety-check-to-see-if-hasing-is-over-no.patch
new file mode 100644
index 0000000..a62086c
--- /dev/null
+++ b/debian/patches/upstream/0021-db_postgres-safety-check-to-see-if-hasing-is-over-no.patch
@@ -0,0 +1,37 @@
+From 5d8315268e19538023d4127e74e166925ea216b8 Mon Sep 17 00:00:00 2001
+From: Daniel-Constantin Mierla <miconda at gmail.com>
+Date: Fri, 23 Oct 2015 18:56:45 +0200
+Subject: [PATCH] db_postgres: safety check to see if hasing is over non-null
+ pointer
+
+- inside implementation of replace command
+
+(cherry picked from commit 9cd4aef84d8e7a079486ff73285a9bd6a15e8db3)
+---
+ modules/db_postgres/km_dbase.c | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/modules/db_postgres/km_dbase.c b/modules/db_postgres/km_dbase.c
+index 816a512..7c9a1bb 100644
+--- a/modules/db_postgres/km_dbase.c
++++ b/modules/db_postgres/km_dbase.c
+@@ -905,12 +905,12 @@ int db_postgres_replace(const db1_con_t* _h, const db_key_t* _k,
+ 						pos += VAL_UINT(&_v[i]);
+ 						break;
+ 					case DB1_STR:
+-						pos += get_hash1_raw((VAL_STR(&_v[i])).s,
+-									(VAL_STR(&_v[i])).len);
++						pos += ((VAL_STR(&_v[i])).s)?get_hash1_raw((VAL_STR(&_v[i])).s,
++									(VAL_STR(&_v[i])).len):0;
+ 						break;
+ 					case DB1_STRING:
+-						pos += get_hash1_raw(VAL_STRING(&_v[i]),
+-									strlen(VAL_STRING(&_v[i])));
++						pos += (VAL_STRING(&_v[i]))?get_hash1_raw(VAL_STRING(&_v[i]),
++									strlen(VAL_STRING(&_v[i]))):0;
+ 						break;
+ 					default:
+ 						break;
+-- 
+2.6.2
+
diff --git a/debian/patches/upstream/0022-core-fixed-passed-buffer-size-in-suip2a-for-ipv6.patch b/debian/patches/upstream/0022-core-fixed-passed-buffer-size-in-suip2a-for-ipv6.patch
new file mode 100644
index 0000000..a5d0198
--- /dev/null
+++ b/debian/patches/upstream/0022-core-fixed-passed-buffer-size-in-suip2a-for-ipv6.patch
@@ -0,0 +1,39 @@
+From e1b60b857f78ec459ae31a4cf6475643ec102f40 Mon Sep 17 00:00:00 2001
+From: Daniel-Constantin Mierla <miconda at gmail.com>
+Date: Mon, 26 Oct 2015 21:31:59 +0100
+Subject: [PATCH] core: fixed passed buffer size in suip2a() for ipv6
+
+- buffer size set to IP6_MAX_STR_SIZE, it was too short and returned
+  value was empty addres "[]"
+- the function is used only by siptrace
+- patch from github pull request #381
+
+(cherry picked from commit d6f313e61b3318924e6653c8ca1184b2016f701d)
+---
+ ip_addr.h | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/ip_addr.h b/ip_addr.h
+index bce06fa..20176b0 100644
+--- a/ip_addr.h
++++ b/ip_addr.h
+@@ -741,14 +741,14 @@ static inline char* suip2a(union sockaddr_union* su, int su_len)
+ 			return "<addr. error>";
+ 		buf[0]='[';
+ 		offs=1+ip6tosbuf((unsigned char*)su->sin6.sin6_addr.s6_addr, &buf[1],
+-							sizeof(buf)-4);
++							IP6_MAX_STR_SIZE);
+ 		buf[offs]=']';
+ 		offs++;
+ 	}else
+ 	if (unlikely(su_len<sizeof(su->sin)))
+ 		return "<addr. error>";
+ 	else
+-		offs=ip4tosbuf((unsigned char*)&su->sin.sin_addr, buf, sizeof(buf)-2);
++		offs=ip4tosbuf((unsigned char*)&su->sin.sin_addr, buf, IP4_MAX_STR_SIZE);
+ 	buf[offs]=0;
+ 	return buf;
+ }
+-- 
+2.6.2
+
diff --git a/debian/patches/upstream/0023-tm-added-braces-around-initializer-of-cancel-reason-.patch b/debian/patches/upstream/0023-tm-added-braces-around-initializer-of-cancel-reason-.patch
new file mode 100644
index 0000000..fba5c7c
--- /dev/null
+++ b/debian/patches/upstream/0023-tm-added-braces-around-initializer-of-cancel-reason-.patch
@@ -0,0 +1,30 @@
+From cc236c6720c3c4d91d6cf69134bb6c290d530900 Mon Sep 17 00:00:00 2001
+From: Daniel-Constantin Mierla <miconda at gmail.com>
+Date: Tue, 27 Oct 2015 11:26:23 +0100
+Subject: [PATCH] tm: added braces around initializer of cancel reason map
+
+- reported by Yacin Caner
+
+(cherry picked from commit fc0e6275fa61f72c1fed0f69393f609cc682888c)
+---
+ modules/tm/t_cancel.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/modules/tm/t_cancel.c b/modules/tm/t_cancel.c
+index ce18354..9db7abe 100644
+--- a/modules/tm/t_cancel.c
++++ b/modules/tm/t_cancel.c
+@@ -43,8 +43,8 @@ typedef struct cancel_reason_map {
+ } cancel_reason_map_t;
+ 
+ static cancel_reason_map_t _cancel_reason_map[] = {
+-	200, str_init("Answered elsewhere"),
+-	0, {0, 0}
++	{ 200, str_init("Answered elsewhere") },
++	{ 0, {0, 0} }
+ };
+ 
+ /**
+-- 
+2.6.2
+
diff --git a/debian/patches/upstream/0024-ctl-increased-default-buffers-size-for-rpc-responses.patch b/debian/patches/upstream/0024-ctl-increased-default-buffers-size-for-rpc-responses.patch
new file mode 100644
index 0000000..88d9dc3
--- /dev/null
+++ b/debian/patches/upstream/0024-ctl-increased-default-buffers-size-for-rpc-responses.patch
@@ -0,0 +1,99 @@
+From bc00c004f5c8214f814369e01f8ec78ca780cbb5 Mon Sep 17 00:00:00 2001
+From: Daniel-Constantin Mierla <miconda at gmail.com>
+Date: Mon, 2 Nov 2015 13:30:32 +0100
+Subject: [PATCH] ctl: increased default buffers size for rpc responses
+
+ - binrpc_max_body_size = 32
+ - binrpc_struct_max_body_size = 8
+
+(cherry picked from commit 19756eecb2048320182667cc440cfa7d275304c9)
+---
+ modules/ctl/README             | 8 ++++----
+ modules/ctl/binrpc_run.c       | 5 +++--
+ modules/ctl/doc/ctl_params.xml | 8 ++++----
+ 3 files changed, 11 insertions(+), 10 deletions(-)
+
+diff --git a/modules/ctl/README b/modules/ctl/README
+index 09f35d4..2de6fcb 100644
+--- a/modules/ctl/README
++++ b/modules/ctl/README
+@@ -235,20 +235,20 @@ modparam("ctl", "autoconversion", 1)
+    Set the size of binrpc buffer for RPC reply. Value represents
+    kilobytes.
+ 
+-   Default: 4 (meaning 4KB);
++   Default: 32 (meaning 32KB);
+ 
+    Example 1.8. Set the binrpc_max_body_size parameter
+-modparam("ctl", "binrpc_max_body_size", 10)
++modparam("ctl", "binrpc_max_body_size", 16)
+ 
+ 3.8. binrpc_struct_max_body_size (integer)
+ 
+    Set the size of binrpc structure buffer for RPC reply. Value represents
+    kilobytes.
+ 
+-   Default: 1 (meaning 1KB);
++   Default: 8 (meaning 8KB);
+ 
+    Example 1.9. Set the binrpc_struct_max_body_size parameter
+-modparam("ctl", "binrpc_struct_max_body_size", 3)
++modparam("ctl", "binrpc_struct_max_body_size", 4)
+ 
+ 4. SIP-router RPC Functions
+ 
+diff --git a/modules/ctl/binrpc_run.c b/modules/ctl/binrpc_run.c
+index c4b7297..2355a50 100644
+--- a/modules/ctl/binrpc_run.c
++++ b/modules/ctl/binrpc_run.c
+@@ -36,8 +36,9 @@
+    rpc->scan (default: not set) */
+ int autoconvert=0;
+ 
+-int binrpc_max_body_size = 4; /* multiplied by 1024 in mod init */
+-int  binrpc_struct_max_body_size = 1; /* multiplied by 1024 in mod init */
++int binrpc_max_body_size = 32; /* multiplied by 1024 in mod init */
++int binrpc_struct_max_body_size = 8; /* multiplied by 1024 in mod init */
++
+ #define BINRPC_MAX_BODY	binrpc_max_body_size  /* maximum body for send */
+ #define STRUCT_MAX_BODY	binrpc_struct_max_body_size
+ #define MAX_MSG_CHUNKS	96
+diff --git a/modules/ctl/doc/ctl_params.xml b/modules/ctl/doc/ctl_params.xml
+index 3bd2553..09041bd 100644
+--- a/modules/ctl/doc/ctl_params.xml
++++ b/modules/ctl/doc/ctl_params.xml
+@@ -200,13 +200,13 @@ modparam("ctl", "autoconversion", 1)
+ 		kilobytes.
+ 	</para>
+ 	<para>
+-		Default: 4 (meaning 4KB);
++		Default: 32 (meaning 32KB);
+ 	</para>
+ 	<example>
+ 		<title>Set the <varname>binrpc_max_body_size</varname> parameter
+ 		</title>
+ 		<programlisting>
+-modparam("ctl", "binrpc_max_body_size", 10)
++modparam("ctl", "binrpc_max_body_size", 16)
+ 		</programlisting>
+ 	</example>
+ 	</section>
+@@ -218,13 +218,13 @@ modparam("ctl", "binrpc_max_body_size", 10)
+ 		kilobytes.
+ 	</para>
+ 	<para>
+-		Default: 1 (meaning 1KB);
++		Default: 8 (meaning 8KB);
+ 	</para>
+ 	<example>
+ 		<title>Set the <varname>binrpc_struct_max_body_size</varname> parameter
+ 		</title>
+ 		<programlisting>
+-modparam("ctl", "binrpc_struct_max_body_size", 3)
++modparam("ctl", "binrpc_struct_max_body_size", 4)
+ 		</programlisting>
+ 	</example>
+ 	</section>
+-- 
+2.6.2
+
diff --git a/debian/patches/upstream/0025-kamdbctl-divert-stderr-when-searching-for-greadlink.patch b/debian/patches/upstream/0025-kamdbctl-divert-stderr-when-searching-for-greadlink.patch
new file mode 100644
index 0000000..757f6e7
--- /dev/null
+++ b/debian/patches/upstream/0025-kamdbctl-divert-stderr-when-searching-for-greadlink.patch
@@ -0,0 +1,32 @@
+From 5c9ef6ca51d51232a0e3ab4e57915a7674e876a1 Mon Sep 17 00:00:00 2001
+From: Daniel-Constantin Mierla <miconda at gmail.com>
+Date: Mon, 2 Nov 2015 15:23:31 +0100
+Subject: [PATCH] kamdbctl: divert stderr when searching for greadlink
+
+(cherry picked from commit 2bd19e232ece9bf0a090ba34d505d9ed6c9753a5)
+---
+ utils/kamctl/kamdbctl | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/utils/kamctl/kamdbctl b/utils/kamctl/kamdbctl
+index 13f227e..e8915d1 100755
+--- a/utils/kamctl/kamdbctl
++++ b/utils/kamctl/kamdbctl
+@@ -16,12 +16,12 @@ TEST="false"
+ ### include resource files, if any
+ 
+ # check for rc file at same location with kamdbctl
+-which greadlink > /dev/null
++which greadlink > /dev/null 2>&1
+ ret=$?
+ if [ $ret -eq 0 ] ; then
+ 	KAMCTLFULLPATH=$(greadlink -f "$0")
+ else
+-	which readlink > /dev/null
++	which readlink > /dev/null 2>&1
+ 	ret=$?
+ 	if [ $ret -eq 0 ] ; then
+ 		KAMCTLFULLPATH=$(readlink -f "$0")
+-- 
+2.6.2
+
diff --git a/debian/patches/upstream/0026-core-parser-remove-inline-for-parse_param.patch b/debian/patches/upstream/0026-core-parser-remove-inline-for-parse_param.patch
new file mode 100644
index 0000000..a4f6e7e
--- /dev/null
+++ b/debian/patches/upstream/0026-core-parser-remove-inline-for-parse_param.patch
@@ -0,0 +1,43 @@
+From 3edb10ad073c383dab8a2819d759fcc9e3bd9986 Mon Sep 17 00:00:00 2001
+From: Daniel-Constantin Mierla <miconda at gmail.com>
+Date: Mon, 2 Nov 2015 16:19:44 +0100
+Subject: [PATCH] core: parser - remove inline for parse_param()
+
+- it gets recent compiler warnings when is an extern object
+- reported by Victor Seva, GH#286
+
+(cherry picked from commit e3a8e5772445d28a0fc6db2e432d750dbb8062da)
+---
+ parser/parse_param.c | 2 +-
+ parser/parse_param.h | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/parser/parse_param.c b/parser/parse_param.c
+index 79e65e9..b9e0fbc 100644
+--- a/parser/parse_param.c
++++ b/parser/parse_param.c
+@@ -534,7 +534,7 @@ error:
+  * 	0: success, but expect a next paramter
+  * 	1: success and exepect no more parameters
+  */
+-inline int parse_param(str *_s, pclass_t _c, param_hooks_t *_h, param_t *t)
++int parse_param(str *_s, pclass_t _c, param_hooks_t *_h, param_t *t)
+ {
+ 	return parse_param2(_s, _c, _h, t, ';');
+ }
+diff --git a/parser/parse_param.h b/parser/parse_param.h
+index 98a1bd1..5622df9 100644
+--- a/parser/parse_param.h
++++ b/parser/parse_param.h
+@@ -143,7 +143,7 @@ typedef union param_hooks {
+  * 	0: success, but expect a next paramter
+  * 	1: success and exepect no more parameters
+  */
+-extern inline int parse_param(str *_s, pclass_t _c, param_hooks_t *_h, param_t *t);
++extern int parse_param(str *_s, pclass_t _c, param_hooks_t *_h, param_t *t);
+ 
+ 
+ /*! \brief
+-- 
+2.6.2
+
diff --git a/debian/patches/upstream/0027-nathelper-consider-IPv6-brackets-when-checking-size-.patch b/debian/patches/upstream/0027-nathelper-consider-IPv6-brackets-when-checking-size-.patch
new file mode 100644
index 0000000..ec8fbc2
--- /dev/null
+++ b/debian/patches/upstream/0027-nathelper-consider-IPv6-brackets-when-checking-size-.patch
@@ -0,0 +1,36 @@
+From 8d82eb9a43885a1c524c5a53155f3299ce55fbb7 Mon Sep 17 00:00:00 2001
+From: Daniel-Constantin Mierla <miconda at gmail.com>
+Date: Wed, 4 Nov 2015 15:43:12 +0100
+Subject: [PATCH] nathelper: consider IPv6 brackets when checking size for
+ keepalive request
+
+(cherry picked from commit 27f19950f107a943c3bf9db1fddb1e4912136181)
+---
+ modules/nathelper/sip_pinger.h | 4 +---
+ 1 file changed, 1 insertion(+), 3 deletions(-)
+
+diff --git a/modules/nathelper/sip_pinger.h b/modules/nathelper/sip_pinger.h
+index 0ff60b1..368961f 100644
+--- a/modules/nathelper/sip_pinger.h
++++ b/modules/nathelper/sip_pinger.h
+@@ -18,9 +18,6 @@
+  * along with this program; if not, write to the Free Software
+  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+  *
+- * History:
+- * ---------
+- * 2005-07-11  created (bogdan)
+  */
+ 
+ 
+@@ -138,6 +135,7 @@ static inline char* build_sipping(str *curi, struct socket_info* s, str *path,
+ 
+ 	if ( sipping_method.len + 1 + curi->len + s_len(" SIP/2.0"CRLF) +
+ 		s_len("Via: SIP/2.0/UDP ") + vaddr.len +
++				((s->address.af==AF_INET6)?2:0) +
+ 				1 + vport.len + s_len(";branch=0") +
+ 		(path->len ? (s_len(CRLF"Route: ") + path->len) : 0) +
+ 		s_len(CRLF"From: ") +  sipping_from.len + s_len(";tag=") +
+-- 
+2.6.2
+
diff --git a/debian/patches/upstream/0028-core-print-src-and-dst-addresses-in-tcp-error-log-me.patch b/debian/patches/upstream/0028-core-print-src-and-dst-addresses-in-tcp-error-log-me.patch
new file mode 100644
index 0000000..c213903
--- /dev/null
+++ b/debian/patches/upstream/0028-core-print-src-and-dst-addresses-in-tcp-error-log-me.patch
@@ -0,0 +1,155 @@
+From 16be09c270e5dafd5721129c68dde7e2ababed38 Mon Sep 17 00:00:00 2001
+From: Daniel-Constantin Mierla <miconda at gmail.com>
+Date: Wed, 4 Nov 2015 10:08:02 +0100
+Subject: [PATCH] core: print src and dst addresses in tcp error log messages
+
+(cherry picked from commit 420a11873291cca93c8b43b5766f8661d46538c5)
+---
+ tcp_read.c | 53 +++++++++++++++++++++++++++++++++++++----------------
+ 1 file changed, 37 insertions(+), 16 deletions(-)
+
+diff --git a/tcp_read.c b/tcp_read.c
+index 2e1d3f2..bf07574 100644
+--- a/tcp_read.c
++++ b/tcp_read.c
+@@ -268,14 +268,19 @@ again:
+ 						}
+ 				}
+ 				LOG(cfg_get(core, core_cfg, corelog),
+-						"error reading: %s (%d)\n", strerror(errno), errno);
++						"error reading: %s (%d) ([%s]:%u -> [%s]:%u)\n",
++						strerror(errno), errno,
++						ip_addr2a(&c->rcv.src_ip), c->rcv.src_port,
++						ip_addr2a(&c->rcv.dst_ip), c->rcv.dst_port);
+ 				return -1;
+ 			}
+ 		}else if (unlikely((bytes_read==0) || 
+ 					(*flags & RD_CONN_FORCE_EOF))){
+ 			c->state=S_CONN_EOF;
+ 			*flags|=RD_CONN_EOF;
+-			LM_DBG("EOF on %p, FD %d\n", c, fd);
++			LM_DBG("EOF on %p, FD %d ([%s]:%u -> [%s]:%u)\n", c, fd,
++					ip_addr2a(&c->rcv.src_ip), c->rcv.src_port,
++					ip_addr2a(&c->rcv.dst_ip), c->rcv.dst_port);
+ 		}else{
+ 			if (unlikely(c->state==S_CONN_CONNECT || c->state==S_CONN_ACCEPT)){
+ 				TCP_STATS_ESTABLISHED(c->state);
+@@ -319,7 +324,9 @@ int tcp_read(struct tcp_connection *c, int* flags)
+ 	bytes_free=r->b_size- (int)(r->pos - r->buf);
+ 	
+ 	if (unlikely(bytes_free==0)){
+-		LM_ERR("buffer overrun, dropping\n");
++		LM_ERR("buffer overrun, dropping ([%s]:%u -> [%s]:%u)\n",
++				ip_addr2a(&c->rcv.src_ip), c->rcv.src_port,
++				ip_addr2a(&c->rcv.dst_ip), c->rcv.dst_port);
+ 		r->error=TCP_REQ_OVERRUN;
+ 		return -1;
+ 	}
+@@ -507,7 +514,7 @@ int tcp_read_headers(struct tcp_connection *c, int* read_flags)
+ 								p++;
+ 								goto skip;
+ 							} else {
+-								LM_DBG("ERROR: no clen, p=%X\n", *p);
++								LM_DBG("no clen, p=%X\n", *p);
+ 								r->error=TCP_REQ_BAD_LEN;
+ 							}
+ 						}
+@@ -579,7 +586,7 @@ int tcp_read_headers(struct tcp_connection *c, int* read_flags)
+ 							p++;
+ 							goto skip;
+ 						} else {
+-							LM_DBG("ERROR: no clen, p=%X\n", *p);
++							LM_DBG("no clen, p=%X\n", *p);
+ 							r->error=TCP_REQ_BAD_LEN;
+ 						}
+ 					}
+@@ -1367,7 +1374,9 @@ again:
+ 				init_dst_from_rcv(&dst, &con->rcv);
+ 
+ 				if (tcp_send(&dst, 0, CRLF, CRLF_LEN) < 0) {
+-					LM_ERR("CRLF ping: tcp_send() failed\n");
++					LM_ERR("CRLF ping: tcp_send() failed ([%s]:%u -> [%s]:%u)\n",
++							ip_addr2a(&con->rcv.src_ip), con->rcv.src_port,
++							ip_addr2a(&con->rcv.dst_ip), con->rcv.dst_port);
+ 				}
+ 				ret = 0;
+ 			} else if (unlikely(req->state==H_STUN_END)) {
+@@ -1428,7 +1437,9 @@ again:
+ 				/*if we still have some unparsed bytes, try to parse them too*/
+ 				goto again;
+ 			} else if (unlikely(con->state==S_CONN_EOF)){
+-				LM_DBG("EOF after reading complete request\n");
++				LM_DBG("EOF after reading complete request ([%s]:%u -> [%s]:%u)\n",
++						ip_addr2a(&con->rcv.src_ip), con->rcv.src_port,
++						ip_addr2a(&con->rcv.dst_ip), con->rcv.dst_port);
+ 				resp=CONN_EOF;
+ 			}
+ 			req->parsed=req->buf; /* fix req->parsed */
+@@ -1446,8 +1457,10 @@ void release_tcpconn(struct tcp_connection* c, long state, int unix_sock)
+ {
+ 	long response[2];
+ 	
+-		LM_DBG("releasing con %p, state %ld, fd=%d, id=%d\n",
+-				c, state, c->fd, c->id);
++		LM_DBG("releasing con %p, state %ld, fd=%d, id=%d ([%s]:%u -> [%s]:%u)\n",
++				c, state, c->fd, c->id,
++				ip_addr2a(&c->rcv.src_ip), c->rcv.src_port,
++				ip_addr2a(&c->rcv.dst_ip), c->rcv.dst_port);
+ 		LM_DBG("extra_data %p\n", c->extra_data);
+ 		/* release req & signal the parent */
+ 		c->reader_pid=0; /* reset it */
+@@ -1479,8 +1492,11 @@ static ticks_t tcpconn_read_timeout(ticks_t t, struct timer_ln* tl, void* data)
+ 	/* if conn->state is ERROR or BAD => force timeout too */
+ 	if (unlikely(io_watch_del(&io_w, c->fd, -1, IO_FD_CLOSING)<0)){
+ 		LM_ERR("io_watch_del failed for %p"
+-					" id %d fd %d, state %d, flags %x, main fd %d\n",
+-					c, c->id, c->fd, c->state, c->flags, c->s);
++					" id %d fd %d, state %d, flags %x, main fd %d"
++					" ([%s]:%u -> [%s]:%u)\n",
++					c, c->id, c->fd, c->state, c->flags, c->s,
++					ip_addr2a(&c->rcv.src_ip), c->rcv.src_port,
++					ip_addr2a(&c->rcv.dst_ip), c->rcv.dst_port);
+ 	}
+ 	tcpconn_listrm(tcp_conn_lst, c, c_next, c_prev);
+ 	release_tcpconn(c, (c->state<0)?CONN_ERROR:CONN_RELEASE, tcpmain_sock);
+@@ -1594,9 +1610,11 @@ repeat_1st_read:
+ 								S_TO_TICKS(TCP_CHILD_TIMEOUT), t);
+ 			if (unlikely(io_watch_add(&io_w, s, POLLIN, F_TCPCONN, con)<0)){
+ 				LM_CRIT("io_watch_add failed for %p id %d fd %d, state %d, flags %x,"
+-							" main fd %d, refcnt %d\n",
++							" main fd %d, refcnt %d ([%s]:%u -> [%s]:%u)\n",
+ 							con, con->id, con->fd, con->state, con->flags,
+-							con->s, atomic_get(&con->refcnt));
++							con->s, atomic_get(&con->refcnt),
++							ip_addr2a(&con->rcv.src_ip), con->rcv.src_port,
++							ip_addr2a(&con->rcv.dst_ip), con->rcv.dst_port);
+ 				tcpconn_listrm(tcp_conn_lst, con, c_next, c_prev);
+ 				local_timer_del(&tcp_reader_ltimer, &con->timer);
+ 				goto con_error;
+@@ -1628,9 +1646,12 @@ read_error:
+ 				if (unlikely(io_watch_del(&io_w, con->fd, idx,
+ 											IO_FD_CLOSING) < 0)){
+ 					LM_CRIT("io_watch_del failed for %p id %d fd %d,"
+-							" state %d, flags %x, main fd %d, refcnt %d\n",
++							" state %d, flags %x, main fd %d, refcnt %d"
++							" ([%s]:%u -> [%s]:%u)\n",
+ 							con, con->id, con->fd, con->state,
+-							con->flags, con->s, atomic_get(&con->refcnt));
++							con->flags, con->s, atomic_get(&con->refcnt),
++							ip_addr2a(&con->rcv.src_ip), con->rcv.src_port,
++							ip_addr2a(&con->rcv.dst_ip), con->rcv.dst_port);
+ 				}
+ 				tcpconn_listrm(tcp_conn_lst, con, c_next, c_prev);
+ 				local_timer_del(&tcp_reader_ltimer, &con->timer);
+@@ -1696,7 +1717,7 @@ void tcp_receive_loop(int unix_sock)
+ 		goto error;
+ 	/* add the unix socket */
+ 	if (io_watch_add(&io_w, tcpmain_sock, POLLIN,  F_TCPMAIN, 0)<0){
+-		LM_CRIT("failed to add socket to the fd list\n");
++		LM_CRIT("failed to add tcp main socket to the fd list\n");
+ 		goto error;
+ 	}
+ 
+-- 
+2.6.2
+
diff --git a/debian/patches/upstream/0029-tls-check-for-support-of-SSLv3-method.patch b/debian/patches/upstream/0029-tls-check-for-support-of-SSLv3-method.patch
new file mode 100644
index 0000000..43f729c
--- /dev/null
+++ b/debian/patches/upstream/0029-tls-check-for-support-of-SSLv3-method.patch
@@ -0,0 +1,32 @@
+From 946e996fed4bed9a62703cdd248777e2c7ab4a89 Mon Sep 17 00:00:00 2001
+From: Daniel-Constantin Mierla <miconda at gmail.com>
+Date: Mon, 9 Nov 2015 09:21:29 +0100
+Subject: [PATCH] tls: check for support of SSLv3 method
+
+- some versions of libssl removed support for SSLv3
+- reported by Victore Seva, FS#391
+
+(cherry picked from commit b1c6c2af7e96c0bcbdee4ff46f6faf19fdc75d9f)
+---
+ modules/tls/tls_init.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/modules/tls/tls_init.c b/modules/tls/tls_init.c
+index bd14647..d7f3cef 100644
+--- a/modules/tls/tls_init.c
++++ b/modules/tls/tls_init.c
+@@ -344,9 +344,11 @@ static void init_ssl_methods(void)
+ 	ssl_methods[TLS_USE_SSLv2 - 1] = SSLv2_method();
+ #endif
+ 
++#ifndef OPENSSL_NO_SSL3_METHOD
+ 	ssl_methods[TLS_USE_SSLv3_cli - 1] = SSLv3_client_method();
+ 	ssl_methods[TLS_USE_SSLv3_srv - 1] = SSLv3_server_method();
+ 	ssl_methods[TLS_USE_SSLv3 - 1] = SSLv3_method();
++#endif
+ 
+ 	ssl_methods[TLS_USE_TLSv1_cli - 1] = TLSv1_client_method();
+ 	ssl_methods[TLS_USE_TLSv1_srv - 1] = TLSv1_server_method();
+-- 
+2.6.2
+
diff --git a/debian/patches/upstream/0030-Makefile.defs-removed-option-minline-all-stringops-f.patch b/debian/patches/upstream/0030-Makefile.defs-removed-option-minline-all-stringops-f.patch
new file mode 100644
index 0000000..62e2bb1
--- /dev/null
+++ b/debian/patches/upstream/0030-Makefile.defs-removed-option-minline-all-stringops-f.patch
@@ -0,0 +1,38 @@
+From b5d19f21718b94fb522db5b414d43e7fdb038ebf Mon Sep 17 00:00:00 2001
+From: Daniel-Constantin Mierla <miconda at gmail.com>
+Date: Mon, 9 Nov 2015 09:36:12 +0100
+Subject: [PATCH] Makefile.defs: removed option -minline-all-stringops for
+ compiler on mips
+
+- not supported, reported by Victor Seva, FS#392
+
+(cherry picked from commit 2718efddb8e87a269af012d8661d57887e7c4d86)
+---
+ Makefile.defs | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+diff --git a/Makefile.defs b/Makefile.defs
+index f7bbc16..0b809a9 100644
+--- a/Makefile.defs
++++ b/Makefile.defs
+@@ -1272,13 +1272,15 @@ ifeq		($(CC_NAME), gcc)
+ 				CFLAGS=$(CC_OPT) -funroll-loops  $(PROFILE)
+ 			#if gcc 5.0+, 4.5+ or 4.2+
+ ifeq (,$(strip $(filter-out 4.2+ 4.5+ 5.0+,$(CC_SHORTVER))))
+-					CFLAGS+=-march=r3000 -minline-all-stringops \
++					CFLAGS+=-march=r3000 \
+ 							-ftree-vectorize -fno-strict-overflow
++			# not supported on mips: -minline-all-stringops
+ else
+ 			#if gcc 4.0+
+ ifeq			($(CC_SHORTVER), 4.x)
+-					CFLAGS+=-march=r3000 -minline-all-stringops \
++					CFLAGS+=-march=r3000 \
+ 							-ftree-vectorize
++			# not supported on mips: -minline-all-stringops
+ else
+ 			#if gcc 3.4+
+ ifeq			($(CC_SHORTVER), 3.4)
+-- 
+2.6.2
+

-- 
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