<pre style='margin:0'>
Joshua Root (jmroot) pushed a commit to branch master
in repository macports-ports.

</pre>
<p><a href="https://github.com/macports/macports-ports/commit/5114b7ad47470035f3859faf8d466131ed17be05">https://github.com/macports/macports-ports/commit/5114b7ad47470035f3859faf8d466131ed17be05</a></p>
<pre style="white-space: pre; background: #F8F8F8">The following commit(s) were added to refs/heads/master by this push:
<span style='display:block; white-space:pre;color:#404040;'>     new 5114b7a  jabber: update to 1.6.1.1, apply FreeBSD patches
</span>5114b7a is described below

<span style='display:block; white-space:pre;color:#808000;'>commit 5114b7ad47470035f3859faf8d466131ed17be05
</span>Author: Joshua Root <jmr@macports.org>
AuthorDate: Sat Apr 21 22:51:18 2018 +1000

<span style='display:block; white-space:pre;color:#404040;'>    jabber: update to 1.6.1.1, apply FreeBSD patches
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    Also remove ssl variant and just enable TLS support always (which now
</span><span style='display:block; white-space:pre;color:#404040;'>    uses gnutls).
</span>---
 net/jabber/Portfile                                |  84 +++-----
 net/jabber/files/configure.patch                   |  19 ++
 net/jabber/files/jabberd-jabberd.h.patch           |  14 ++
 net/jabber/files/jabberd-lib-socket.cc.patch       |  11 +
 net/jabber/files/jabberd-mio.cc.patch              |  17 ++
 net/jabber/files/jabberd-mio_tls.cc.patch          | 236 +++++++++++++++++++++
 net/jabber/files/jabberd_lib_messages.cc.patch     |  11 +
 net/jabber/files/jabberd_lib_xmlnode.cc.patch      |  37 ++++
 net/jabber/files/jabberd_log.cc.patch              |  32 +++
 net/jabber/files/jsm_modules_mod__privacy.cc.patch |  11 +
 net/jabber/files/no_lzo.patch                      |  11 +
 11 files changed, 433 insertions(+), 50 deletions(-)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/net/jabber/Portfile b/net/jabber/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index da1e4f6..ee45b60 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/net/jabber/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/net/jabber/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,64 +1,48 @@
</span> PortSystem 1.0
 
 name           jabber
<span style='display:block; white-space:pre;background:#ffe0e0;'>-version         1.4.2
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-revision   5
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+version            1.6.1.1
</span> categories        net
<span style='display:block; white-space:pre;background:#ffe0e0;'>-license         GPL-2+ MPL-1.1 Apache-1 Restrictive
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+license            GPL-2+
</span> maintainers       nomaintainer
<span style='display:block; white-space:pre;background:#ffe0e0;'>-homepage        http://jabberd.org/
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+homepage   https://jabberd.org/
</span> description       Online presence and instant messaging server
 long_description       The Jabber server (jabberd) is a daemon for Jabber clients to connect and communicate with.
 platforms      darwin
<span style='display:block; white-space:pre;background:#ffe0e0;'>-master_sites    http://download.jabberd.org/jabberd14/ \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           http://download.jabberd.org/jabberd14/old/ \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           http://download.jabberd.org/jabberd14/old/discontinued/ \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           netbsd:packages/distfiles/
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-checksums  md5 10780dbdb93926ea5bb360e1186b939c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-depends_lib        port:libiconv port:expat port:gettext lib:libpth.a:pth
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-build.type  gnu
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+master_sites       https://download.jabberd.org/jabberd14/ \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           https://download.jabberd.org/jabberd14/old/ \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           freebsd:jabber
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+distname   jabberd14-${version}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+checksums  md5 597c7ee14518ba22b1cee883b4737d87 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           sha1 8b7ba77c9e02e9de7125e898900ff0ba5d65986e \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           rmd160 0d3df653b6362f8e580c59ae1b4c9c6467b0bee5
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+depends_build      port:pkgconfig
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+depends_lib        port:expat port:gnutls port:libidn port:popt port:pth
</span> 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-platform darwin {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   configure.cflags-append "-DBIND_8_COMPAT=1"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+patchfiles configure.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           jabberd_lib_messages.cc.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           no_lzo.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           jabberd-jabberd.h.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           jabberd-lib-socket.cc.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           jabberd-mio.cc.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           jabberd-mio_tls.cc.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           jabberd_lib_xmlnode.cc.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           jabberd_log.cc.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           jsm_modules_mod__privacy.cc.patch
</span> 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-configure.cflags-append -std=gnu89
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+configure.args     --enable-ssl \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           --enable-ipv6 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           --with-mysql=no \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           --with-postgresql=no
</span> 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-destroot {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   file mkdir ${destroot}${prefix}/etc
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   file mkdir ${destroot}${prefix}/lib
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   file mkdir ${destroot}${prefix}/sbin
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   file mkdir ${destroot}${prefix}/share/man
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   xinstall -o root -m 755 ${worksrcpath}/jabberd/jabberd ${destroot}${prefix}/sbin
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   xinstall -o root -m 755 -d ${destroot}${prefix}/lib/jabber/pthsock
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   xinstall -o root -m 755 ${worksrcpath}/pthsock/pthsock_client.so ${destroot}${prefix}/lib/jabber/pthsock
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   xinstall -o root -m 755 -d ${destroot}${prefix}/lib/jabber/dialback
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   xinstall -o root -m 755 ${worksrcpath}/dialback/dialback.so ${destroot}${prefix}/lib/jabber/dialback
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   xinstall -o root -m 755 -d ${destroot}${prefix}/lib/jabber/dnsrv
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   xinstall -o root -m 755 ${worksrcpath}/dnsrv/dnsrv.so ${destroot}${prefix}/lib/jabber/dnsrv
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   xinstall -o root -m 755 -d ${destroot}${prefix}/lib/jabber/xdb_file
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   xinstall -o root -m 755 ${worksrcpath}/xdb_file/xdb_file.so ${destroot}${prefix}/lib/jabber/xdb_file
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   xinstall -o root -m 755 -d ${destroot}${prefix}/lib/jabber/jsm
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   xinstall -o root -m 755 ${worksrcpath}/jsm/jsm.so ${destroot}${prefix}/lib/jabber/jsm
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   xinstall -o root -m 755 -d ${destroot}${prefix}/etc/jabber/
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   xinstall -o root -m 755 ${worksrcpath}/jabber.xml ${destroot}${prefix}/etc/jabber
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   destroot.keepdirs \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           ${destroot}${prefix}/var/lib/jabber \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           ${destroot}${prefix}/var/run/jabber \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           ${destroot}${prefix}/var/log/jabber \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-           ${destroot}${prefix}/var/spool/jabber
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+build.type  gnu
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+use_parallel_build no
</span> 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        file copy -force ${destroot}${prefix}/etc/jabber/jabber.xml ${destroot}${prefix}/etc/jabber/jabber.xml.default
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+post-destroot {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    delete ${destroot}${prefix}/etc/jabber.xml ${destroot}${prefix}/etc/cacerts.pem
</span> }
<span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-variant ssl description {Enable SSL} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   depends_lib-append      lib:libssl.0.9:openssl
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   configure.args  --enable-ssl
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+post-activate {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    if {![file exists ${prefix}/etc/jabber.xml]} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        copy ${prefix}/etc/jabber.xml.dist ${prefix}/etc/jabber.xml
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    }
</span> }
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/net/jabber/files/configure.patch b/net/jabber/files/configure.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..5ba1a3c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/net/jabber/files/configure.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,19 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- configure.orig 2007-07-19 08:24:45.000000000 +1000
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ configure      2018-04-21 22:33:59.000000000 +1000
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -21171,6 +21171,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <sys/types.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <sys/socket.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <netdb.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <cstddef>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ main ()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -21878,7 +21879,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ echo "${ECHO_T}yes" >&6; }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   hasgnutlsextra=yes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ fi
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-if test $hasgnutls = "yes" ; then
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++if test $hasgnutlsextra = "yes" ; then
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     CPPFLAGS="$CPPFLAGS $GNUTLSEXTRA_CFLAGS"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     LDFLAGS="$LDFLAGS $GNUTLSEXTRA_LIBS"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/net/jabber/files/jabberd-jabberd.h.patch b/net/jabber/files/jabberd-jabberd.h.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..349e9f5
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/net/jabber/files/jabberd-jabberd.h.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,14 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- jabberd/jabberd.h.orig
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ jabberd/jabberd.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -103,10 +103,10 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <jabberdlib.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <gnutls/gnutls.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <gnutls/x509.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#include <gnutls/openpgp.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #ifdef HAVE_GNUTLS_EXTRA
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #  include <gnutls/extra.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#  include <gnutls/openpgp.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /** Packet types */
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/net/jabber/files/jabberd-lib-socket.cc.patch b/net/jabber/files/jabberd-lib-socket.cc.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..7fa8863
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/net/jabber/files/jabberd-lib-socket.cc.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,11 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- jabberd/lib/socket.cc.orig     2007-07-17 01:20:44.000000000 +0200
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ jabberd/lib/socket.cc  2008-04-29 19:05:42.000000000 +0200
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -95,6 +95,8 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             sa.sin_addr.s_addr = saddr->s_addr;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          flag = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          setsockopt(s, IPPROTO_IPV6, IPV6_V6ONLY, (char*)&flag, sizeof(flag)); 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         if(bind(s,(struct sockaddr*)&sa,sizeof sa) < 0)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             close(s);
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/net/jabber/files/jabberd-mio.cc.patch b/net/jabber/files/jabberd-mio.cc.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..2deabd3
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/net/jabber/files/jabberd-mio.cc.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,17 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- jabberd/mio.cc.orig    2008-04-29 18:54:19.000000000 +0200
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ jabberd/mio.cc 2008-04-29 19:00:45.000000000 +0200
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -673,11 +673,14 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   sa.sin6_flowinfo = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   inet_pton(AF_INET6, addr_str, &sa.sin6_addr);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  flag = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  setsockopt(newm->fd, IPPROTO_IPV6, IPV6_V6ONLY, (char*)&flag, sizeof(flag)); 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         struct sockaddr_in sa;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         sa.sin_family = AF_INET;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         sa.sin_port   = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         inet_aton(xmlnode_get_data(xmlnode_get_list_item(xmlnode_get_tags(greymatter__, "io/bind", namespaces, temp_pool), 0)), &sa.sin_addr);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         bind(newm->fd, (struct sockaddr*)&sa, sizeof(sa));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/net/jabber/files/jabberd-mio_tls.cc.patch b/net/jabber/files/jabberd-mio_tls.cc.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..9351bd7
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/net/jabber/files/jabberd-mio_tls.cc.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,236 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- jabberd/mio_tls.cc.orig        2007-07-16 23:20:44 UTC
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ jabberd/mio_tls.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -39,7 +39,6 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <set>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <string>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <sstream>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#include <gcrypt.h>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <vector>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <list>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #include <iostream>
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -612,7 +611,7 @@ static void mio_tls_process_credentials(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       // load OpenPGP key/certificate
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-      ret = gnutls_certificate_set_openpgp_key_file(current_credentials, pubfile, privfile);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      ret = gnutls_certificate_set_openpgp_key_file(current_credentials, pubfile, privfile, GNUTLS_OPENPGP_FMT_BASE64);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       if (ret < 0) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           log_error(NULL, "Error loading OpenPGP key pub=%s/priv=%s: %s", pubfile, privfile, gnutls_strerror(ret));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           continue;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -631,7 +630,7 @@ static void mio_tls_process_credentials(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       // load the OpenPGP keyring
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-      ret = gnutls_certificate_set_openpgp_keyring_file(current_credentials, file);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      ret = gnutls_certificate_set_openpgp_keyring_file(current_credentials, file, GNUTLS_OPENPGP_FMT_BASE64);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       if (ret < 0) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           log_error(NULL, "Error loading OpenPGP keyring %s: %s", file, gnutls_strerror(ret));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           continue;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -640,23 +639,6 @@ static void mio_tls_process_credentials(
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       continue;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  // load GnuPG trustdb
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  if (j_strcmp(xmlnode_get_localname(cur), "trustdb") == 0) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-      char const *const file = xmlnode_get_data(cur);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-      if (file == NULL) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-          log_warn(NULL, "Initializing TLS subsystem: <trustdb/> element inside the TLS configuration, that does not contain a file-name.");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-          continue;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-      }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-      // load the GnuPG trustdb
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-      ret = gnutls_certificate_set_openpgp_trustdb(current_credentials, file);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-      if (ret < 0) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-          log_error(NULL, "Error loading GnuPG trustdb %s: %s", file, gnutls_strerror(ret));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-          continue;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-      }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   // setup protocols to use
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   if (j_strcmp(xmlnode_get_localname(cur), "protocols") == 0) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       char const *const protocols_data = xmlnode_get_data(cur);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -916,7 +898,7 @@ bool mio_tls_early_init() {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     /* load asn1 tree to be used by libtasn1 */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     ret = asn1_array2tree(subjectAltName_asn1_tab, &mio_tls_asn1_tree, NULL);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if (ret != ASN1_SUCCESS) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  std::cerr << "Error preparing the libtasn1 library: " << libtasn1_strerror(ret) << std::endl;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  std::cerr << "Error preparing the libtasn1 library: " << asn1_strerror(ret) << std::endl;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   return false;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   /* XXX we have to delete the structure on shutdown using asn1_delete_structure(&mio_tls_asn1_tree) */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1302,80 +1284,32 @@ int mio_ssl_starttls(mio m, int originat
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     // overwrite protocol priorities?
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if (mio_tls_protocols.find(identity) != mio_tls_protocols.end()) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  ret = gnutls_protocol_set_priority(session, mio_tls_protocols[identity]);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  if (ret < 0) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-      log_notice(identity, "error setting protocol priority: %s", gnutls_strerror(ret));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     } else if (mio_tls_protocols.find("*") != mio_tls_protocols.end()) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  ret = gnutls_protocol_set_priority(session, mio_tls_protocols["*"]);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  if (ret < 0) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-      log_notice(identity, "error setting protocol priority: %s", gnutls_strerror(ret));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     // overwrite kx algorithm priorities?
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if (mio_tls_kx.find(identity) != mio_tls_kx.end()) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  ret = gnutls_kx_set_priority(session, mio_tls_kx[identity]);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  if (ret < 0) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-      log_notice(identity, "error setting kx algorithm priority: %s", gnutls_strerror(ret));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     } else if (mio_tls_kx.find("*") != mio_tls_kx.end()) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  ret = gnutls_kx_set_priority(session, mio_tls_kx["*"]);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  if (ret < 0) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-      log_notice(identity, "error setting kx algorithm priority: %s", gnutls_strerror(ret));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     // overwrite cipher priorities?
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if (mio_tls_ciphers.find(identity) != mio_tls_ciphers.end()) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  ret = gnutls_cipher_set_priority(session, mio_tls_ciphers[identity]);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  if (ret < 0) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-      log_notice(identity, "error setting cipher algorithm priority: %s", gnutls_strerror(ret));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     } else if (mio_tls_ciphers.find("*") != mio_tls_ciphers.end()) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  ret = gnutls_cipher_set_priority(session, mio_tls_ciphers["*"]);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  if (ret < 0) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-      log_notice(identity, "error setting cipher algorithm priority: %s", gnutls_strerror(ret));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     // overwrite certificate priorities?
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if (mio_tls_certtypes.find(identity) != mio_tls_certtypes.end()) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  ret = gnutls_certificate_type_set_priority(session, mio_tls_certtypes[identity]);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  if (ret < 0) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-      log_notice(identity, "error setting certificate priorities: %s", gnutls_strerror(ret));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     } else if (mio_tls_certtypes.find("*") != mio_tls_certtypes.end()) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  ret = gnutls_certificate_type_set_priority(session, mio_tls_certtypes["*"]);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  if (ret < 0) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-      log_notice(identity, "error setting certificate priorities: %s", gnutls_strerror(ret));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     // overwrite mac algorithm priorities?
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if (mio_tls_mac.find(identity) != mio_tls_mac.end()) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  ret = gnutls_mac_set_priority(session, mio_tls_mac[identity]);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  if (ret < 0) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-      log_notice(identity, "error setting mac algorithm priorities: %s", gnutls_strerror(ret));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     } else if (mio_tls_mac.find("*") != mio_tls_mac.end()) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  ret = gnutls_mac_set_priority(session, mio_tls_mac["*"]);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  if (ret < 0) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-      log_notice(identity, "error setting mac algorithm priorities: %s", gnutls_strerror(ret));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     // overwrite compression algorithm priorities?
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if (mio_tls_compression.find(identity) != mio_tls_compression.end()) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  ret = gnutls_compression_set_priority(session, mio_tls_compression[identity]);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  if (ret < 0) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-      log_notice(identity, "error setting compression algorithm priorities: %s", gnutls_strerror(ret));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     } else if (mio_tls_compression.find("*") != mio_tls_compression.end()) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  ret = gnutls_compression_set_priority(session, mio_tls_compression["*"]);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  if (ret < 0) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-      log_notice(identity, "error setting compression algorithm priorities: %s", gnutls_strerror(ret));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     /* setting certificate credentials */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1498,7 +1432,6 @@ static int mio_tls_check_openpgp(mio m, 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     const gnutls_datum_t *cert_list = NULL;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     unsigned int cert_list_size = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#ifdef HAVE_GNUTLS_EXTRA
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     // get the certificate (it's only a single one for OpenPGP)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     cert_list = gnutls_certificate_get_peers(static_cast<gnutls_session_t>(m->ssl), &cert_list_size);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if (cert_list == NULL || cert_list_size <= 0) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1566,7 +1499,6 @@ static int mio_tls_check_openpgp(mio m, 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     // free memory
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     gnutls_openpgp_key_deinit(pgpkey);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     pool_free(jidpool);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     return 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1684,14 +1616,14 @@ static int mio_tls_check_x509(mio m, cha
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+               /* init subjectAltName_element */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+               ret = asn1_create_element(mio_tls_asn1_tree, "PKIX1.SubjectAltName", &subjectAltName_element);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+               if (ret != ASN1_SUCCESS) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                  log_warn(log_id.c_str(), "error creating asn1 element for PKIX1.SubjectAltName: %s (%s)", libtasn1_strerror(ret), cert_subject.c_str());
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                  log_warn(log_id.c_str(), "error creating asn1 element for PKIX1.SubjectAltName: %s (%s)", asn1_strerror(ret), cert_subject.c_str());
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                   break;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+               }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+               /* decode the extension */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+               ret = asn1_der_decoding(&subjectAltName_element, subjectAltName, subjectAltName_size, NULL);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+               if (ret != ASN1_SUCCESS) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                  log_warn(log_id.c_str(), "error DER decoding subjectAltName extension: %s (%s)", libtasn1_strerror(ret), cert_subject.c_str());
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                  log_warn(log_id.c_str(), "error DER decoding subjectAltName extension: %s (%s)", asn1_strerror(ret), cert_subject.c_str());
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                   asn1_delete_structure(&subjectAltName_element);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                   break;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+               }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1712,7 +1644,7 @@ static int mio_tls_check_x509(mio m, cha
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                       break;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                   }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                   if (ret != ASN1_SUCCESS) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                      log_notice(log_id.c_str(), "error accessing type for %s in subjectAltName: %s (%s)", cnt_string, libtasn1_strerror(ret), cert_subject.c_str());
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                      log_notice(log_id.c_str(), "error accessing type for %s in subjectAltName: %s (%s)", cnt_string, asn1_strerror(ret), cert_subject.c_str());
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                       break;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                   }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1732,7 +1664,7 @@ static int mio_tls_check_x509(mio m, cha
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                           ret = asn1_read_value(subjectAltName_element, access_string, dNSName, &dNSName_len);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                           if (ret != ASN1_SUCCESS) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                              log_notice(log_id.c_str(), "error accessing %s in subjectAltName: %s (%s)", access_string, libtasn1_strerror(ret), cert_subject.c_str());
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                              log_notice(log_id.c_str(), "error accessing %s in subjectAltName: %s (%s)", access_string, asn1_strerror(ret), cert_subject.c_str());
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                               break;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                           }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1772,7 +1704,7 @@ static int mio_tls_check_x509(mio m, cha
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                       /* get the OID of the otherName */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                       ret = asn1_read_value(subjectAltName_element, access_string_type, otherNameType, &otherNameType_len);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                       if (ret != ASN1_SUCCESS) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                          log_notice(log_id.c_str(), "error accessing type information %s in subjectAltName: %s (%s)", access_string_type, libtasn1_strerror(ret), cert_subject.c_str());
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                          log_notice(log_id.c_str(), "error accessing type information %s in subjectAltName: %s (%s)", access_string_type, asn1_strerror(ret), cert_subject.c_str());
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                           break;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                       }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1785,7 +1717,7 @@ static int mio_tls_check_x509(mio m, cha
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                       /* get the value of the otherName */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                       ret = asn1_read_value(subjectAltName_element, access_string_value, otherNameValue, &otherNameValue_len);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                       if (ret != ASN1_SUCCESS) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                          log_notice(log_id.c_str(), "error accessing value of othername %s in subjectAltName: %s (%s)", access_string_value, libtasn1_strerror(ret), cert_subject.c_str());
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                          log_notice(log_id.c_str(), "error accessing value of othername %s in subjectAltName: %s (%s)", access_string_value, asn1_strerror(ret), cert_subject.c_str());
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                           break;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                       }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1799,21 +1731,21 @@ static int mio_tls_check_x509(mio m, cha
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                           ret = asn1_create_element(mio_tls_asn1_tree, "PKIX1.DirectoryString", &directoryString_element);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                           if (ret != ASN1_SUCCESS) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                              log_notice(log_id.c_str(), "error creating DirectoryString element: %s (%s)", libtasn1_strerror(ret), cert_subject.c_str());
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                              log_notice(log_id.c_str(), "error creating DirectoryString element: %s (%s)", asn1_strerror(ret), cert_subject.c_str());
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                               asn1_delete_structure(&directoryString_element);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                               break;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                           }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                           ret = asn1_der_decoding(&directoryString_element, otherNameValue, otherNameValue_len, NULL);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                           if (ret != ASN1_SUCCESS) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                              log_notice(log_id.c_str(), "error decoding DirectoryString: %s (%s)", libtasn1_strerror(ret), cert_subject.c_str());
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                              log_notice(log_id.c_str(), "error decoding DirectoryString: %s (%s)", asn1_strerror(ret), cert_subject.c_str());
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                               asn1_delete_structure(&directoryString_element);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                               break;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                           }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                           ret = asn1_read_value(directoryString_element, "utf8String", thisIdOnXMPPaddr, &thisIdOnXMPPaddr_len);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                           if (ret != ASN1_SUCCESS) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-                              log_notice(log_id.c_str(), "error accessing utf8String of DirectoryString: %s (%s)", libtasn1_strerror(ret), cert_subject.c_str());
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                              log_notice(log_id.c_str(), "error accessing utf8String of DirectoryString: %s (%s)", asn1_strerror(ret), cert_subject.c_str());
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                               asn1_delete_structure(&directoryString_element);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                               break;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                           }
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/net/jabber/files/jabberd_lib_messages.cc.patch b/net/jabber/files/jabberd_lib_messages.cc.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..51427df
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/net/jabber/files/jabberd_lib_messages.cc.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,11 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- jabberd/lib/messages.cc.orig   2007-04-08 05:43:18.000000000 +1000
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ jabberd/lib/messages.cc        2018-04-21 22:06:24.000000000 +1000
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -85,7 +85,7 @@ void messages::set_mapping(const std::st
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   const std::messages<char>& messages = std::use_facet<std::messages<char> >(locale);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   // (try to) open the catalog
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  std::messages<char>::catalog catalog = messages.open(PACKAGE, locale, LOCALEDIR);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  std::messages<char>::catalog catalog = messages.open(PACKAGE, locale);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   if (catalog == -1) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       return;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   }
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/net/jabber/files/jabberd_lib_xmlnode.cc.patch b/net/jabber/files/jabberd_lib_xmlnode.cc.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..e09e74d
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/net/jabber/files/jabberd_lib_xmlnode.cc.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,37 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- jabberd/lib/xmlnode.cc.orig    2007-04-07 19:43:18 UTC
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ jabberd/lib/xmlnode.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -879,9 +879,9 @@ xmlnode xmlnode_get_tag(xmlnode parent, 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ xmlnode_list_item xmlnode_get_tags(xmlnode context_node, const char *path, xht namespaces, pool p) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     char *this_step = NULL;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     const char *ns_iri = NULL;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    char *next_step = NULL;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    char *start_predicate = NULL;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    char *end_predicate = NULL;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    const char *next_step = NULL;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    const char *start_predicate = NULL;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    const char *end_predicate = NULL;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     char *predicate = NULL;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     char *end_prefix = NULL;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     int axis = 0; /* 0 = child, 1 = parent, 2 = attribute */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1830,13 +1830,14 @@ xmlnode xmlnode_select_by_lang(xmlnode_l
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     /* if language has a geographical veriant, get the language as well */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    if (lang != NULL && strchr(lang, '-') != NULL) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  snprintf(general_lang, sizeof(general_lang), "%s", lang);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  if (strchr(lang, '-') != NULL) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-      strchr(lang, '-')[0] = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-      general_lang[0] = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    if (lang != NULL) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#define MIN(a,b) ((a) < (b) ? (a) : (b))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  size_t len = sizeof(general_lang);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  const char *pos;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  if ((pos = strchr(lang, '-')))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      len = MIN(len, pos - lang + 1);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  snprintf(general_lang, len, "%s", lang);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     /* iterate the nodes */
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/net/jabber/files/jabberd_log.cc.patch b/net/jabber/files/jabberd_log.cc.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..4a1c377
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/net/jabber/files/jabberd_log.cc.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,32 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- jabberd/log.cc.orig    2007-07-20 13:56:59 UTC
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ jabberd/log.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -83,21 +83,22 @@ static char *debug_log_timestamp(void) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  * @return 1 if it should be logged, 0 if not
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ static inline int _debug_log_zonefilter(char const* zone) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    char *pos, c = '\0';
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    const char *pos;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    char *tmp;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    int ret = 1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if(zone != NULL && debug__zones != NULL)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   pos = strchr(zone,'.');
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         if(pos != NULL)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            c = *pos;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            *pos = '\0'; /* chop */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            tmp = strndup(zone, pos - zone);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        if(xhash_get(debug__zones,zone) == NULL)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            return 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        if(xhash_get(debug__zones, (pos ? tmp : zone)) == NULL)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            ret = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         if(pos != NULL)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            *pos = c; /* restore */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            free(tmp);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    return 1;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    return ret;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ /**
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/net/jabber/files/jsm_modules_mod__privacy.cc.patch b/net/jabber/files/jsm_modules_mod__privacy.cc.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..5be19d3
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/net/jabber/files/jsm_modules_mod__privacy.cc.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,11 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- jsm/modules/mod_privacy.cc.orig        2007-04-07 19:43:18 UTC
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ jsm/modules/mod_privacy.cc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -1165,7 +1165,7 @@ static mreturn mod_privacy_out_iq_set_li
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   list_items++;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    if (new_items <= 0) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    if (new_items == NULL) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   log_debug2(ZONE, LOGT_EXECFLOW, "This is a deletion request");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/net/jabber/files/no_lzo.patch b/net/jabber/files/no_lzo.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..cc85085
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/net/jabber/files/no_lzo.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,11 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- jabberd/mio_tls.cc.orig        2018-04-21 22:09:14.000000000 +1000
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ jabberd/mio_tls.cc     2018-04-21 22:23:39.000000000 +1000
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -441,7 +441,7 @@ static int const* mio_tls_compile_compre
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       resultList.push_back(GNUTLS_COMP_NULL);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   } else if (oneCompression == "DEFLATE") {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       resultList.push_back(GNUTLS_COMP_DEFLATE);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-#ifdef HAVE_GNUTLS_EXTRA
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#if 0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   } else if (oneCompression == "LZO") {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       resultList.push_back(GNUTLS_COMP_LZO);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span></pre><pre style='margin:0'>

</pre>