aiccu.h, common.c, common.h: fixes for deprecated GNUTLS functions and types

Signed-off-by: Michael Rommel <rommel@layer-7.net>

diff -purN aiccu_20070115.orig/common/aiccu.h aiccu_20070115/common/aiccu.h
--- aiccu_20070115.orig/common/aiccu.h	2007-01-15 13:01:43.000000000 +0100
+++ aiccu_20070115/common/aiccu.h	2013-08-31 23:50:53.651936146 +0200
@@ -111,7 +111,7 @@ struct AICCU_conf
 #endif
 
 #ifdef AICCU_GNUTLS
-	gnutls_certificate_credentials	tls_cred;	/* GNUTLS credentials */
+	gnutls_certificate_credentials_t tls_cred;	/* GNUTLS credentials */
 #endif
 
 	bool		daemonize;		/* Daemonize? */
diff -purN aiccu_20070115.orig/common/common.c aiccu_20070115/common/common.c
--- aiccu_20070115.orig/common/common.c	2006-12-21 15:08:50.000000000 +0100
+++ aiccu_20070115/common/common.c	2013-09-01 01:21:36.031396740 +0200
@@ -271,9 +271,8 @@ TLSSOCKET sock_alloc(void);
 TLSSOCKET sock_alloc(void)
 {
 #ifdef AICCU_GNUTLS
-	/* Allow connections to servers that have OpenPGP keys as well */
-	const int	cert_type_priority[3] = { GNUTLS_CRT_X509, GNUTLS_CRT_OPENPGP, 0 };
 	int		ret;
+	const char	*err;
 #endif /* AICCU_GNUTLS*/
 
 	TLSSOCKET	sock;	
@@ -297,11 +296,16 @@ TLSSOCKET sock_alloc(void)
 	}
 
 	/* Use default priorities */
-	gnutls_set_default_priority(sock->session);
-	/* XXX: Return value is not documented in GNUTLS documentation! */
-
-	gnutls_certificate_type_set_priority(sock->session, cert_type_priority);
-	/* XXX: Return value is not documented in GNUTLS documentation! */
+	ret = gnutls_priority_set_direct(sock->session, "NORMAL", &err); 
+	if (ret < 0)
+	{
+		if (ret == GNUTLS_E_INVALID_REQUEST)
+		{
+			dolog( LOG_ERR, "TLS set priority failed, syntax error at: %s\n", err);
+		}
+		free(sock);
+		return NULL;
+	}
 
 	/* Configure the x509 credentials for the current session */
 	gnutls_credentials_set(sock->session, GNUTLS_CRD_CERTIFICATE, g_aiccu->tls_cred);
@@ -474,7 +478,7 @@ bool sock_gotls(TLSSOCKET sock)
 	}
 
 	/* Set the transport */
-	gnutls_transport_set_ptr(sock->session, (gnutls_transport_ptr)sock->socket);
+	gnutls_transport_set_ptr(sock->session, (gnutls_transport_ptr_t) sock->socket);
 
 	/* Perform the TLS handshake */
 	ret = gnutls_handshake(sock->session);
diff -purN aiccu_20070115.orig/common/common.h aiccu_20070115/common/common.h
--- aiccu_20070115.orig/common/common.h	2007-01-11 15:50:51.000000000 +0100
+++ aiccu_20070115/common/common.h	2013-08-31 23:26:13.683659455 +0200
@@ -381,7 +381,7 @@ struct tlssocket
 	SOCKET			socket;
 #ifdef AICCU_GNUTLS
 	bool			tls_active;	/* TLS active? */
-	gnutls_session		session;	/* The GnuTLS sesision */
+	gnutls_session_t	session;	/* The GnuTLS sesision */
 #endif
 };
 
