Fixes build with >=net-libs/gnutls-2.7.1

http://bugs.gentoo.org/show_bug.cgi?id=274213

--- conn.c
+++ conn.c
@@ -32,7 +32,7 @@
 
 #ifdef HAVE_LIBGNUTLS_OPENSSL
 #  include <gnutls/gnutls.h>
-#  include <gnutls/openssl.h>
+#  include <gnutls/x509.h>
 #endif
 
 int conn_fd_in  = -1;
@@ -42,9 +42,8 @@
 #ifdef HAVE_LIBGNUTLS_OPENSSL
 int csync_conn_usessl = 0;
 
-SSL_METHOD *conn_ssl_meth;
-SSL_CTX *conn_ssl_ctx;
-SSL *conn_ssl;
+static gnutls_session_t conn_tls_session;
+static gnutls_certificate_credentials_t conn_x509_cred;
 #endif
 
 int conn_open(const char *peername)
@@ -112,41 +111,104 @@
 
 #ifdef HAVE_LIBGNUTLS_OPENSSL
 
-char *ssl_keyfile = ETCDIR "/csync2_ssl_key.pem";
-char *ssl_certfile = ETCDIR "/csync2_ssl_cert.pem";
+static void ssl_log(int level, const char* msg)
+{ csync_debug(level, "%s", msg); }
+
+static const char *ssl_keyfile = ETCDIR "/csync2_ssl_key.pem";
+static const char *ssl_certfile = ETCDIR "/csync2_ssl_cert.pem";
 
 int conn_activate_ssl(int server_role)
 {
-	static int sslinit = 0;
+	gnutls_alert_description_t alrt;
+	int err;
 
 	if (csync_conn_usessl)
 		return 0;
 
-	if (!sslinit) {
-		SSL_load_error_strings();
-		SSL_library_init();
-		sslinit=1;
+	gnutls_global_init();
+	gnutls_global_set_log_function(ssl_log);
+	gnutls_global_set_log_level(10);
+
+	gnutls_certificate_allocate_credentials(&conn_x509_cred);
+
+	err = gnutls_certificate_set_x509_key_file(conn_x509_cred, ssl_certfile, ssl_keyfile, GNUTLS_X509_FMT_PEM);
+	if(err != GNUTLS_E_SUCCESS) {
+		gnutls_certificate_free_credentials(conn_x509_cred);
+		gnutls_global_deinit();
+
+		csync_fatal(
+			"SSL: failed to use key file %s and/or certificate file %s: %s (%s)\n",
+			ssl_keyfile,
+			ssl_certfile,
+			gnutls_strerror(err),
+			gnutls_strerror_name(err)
+		);
 	}
 
-	conn_ssl_meth = (server_role ? SSLv23_server_method : SSLv23_client_method)();
-	conn_ssl_ctx = SSL_CTX_new(conn_ssl_meth);
-
-	if (SSL_CTX_use_PrivateKey_file(conn_ssl_ctx, ssl_keyfile, SSL_FILETYPE_PEM) <= 0)
-		csync_fatal("SSL: failed to use key file %s.\n", ssl_keyfile);
-
-	if (SSL_CTX_use_certificate_file(conn_ssl_ctx, ssl_certfile, SSL_FILETYPE_PEM) <= 0)
-		csync_fatal("SSL: failed to use certificate file %s.\n", ssl_certfile);
+	if(server_role) {
+		gnutls_certificate_free_cas(conn_x509_cred);
 
-	if (! (conn_ssl = SSL_new(conn_ssl_ctx)) )
-		csync_fatal("Creating a new SSL handle failed.\n");
-
-	gnutls_certificate_server_set_request(conn_ssl->gnutls_state, GNUTLS_CERT_REQUIRE);
+		if(gnutls_certificate_set_x509_trust_file(conn_x509_cred, ssl_certfile, GNUTLS_X509_FMT_PEM) < 1) {
+			gnutls_certificate_free_credentials(conn_x509_cred);
+			gnutls_global_deinit();
+
+			csync_fatal(
+				"SSL: failed to use certificate file %s as CA.\n",
+				ssl_certfile
+			);
+		}
+	} else
+		gnutls_certificate_free_ca_names(conn_x509_cred);
 
-	SSL_set_rfd(conn_ssl, conn_fd_in);
-	SSL_set_wfd(conn_ssl, conn_fd_out);
+	gnutls_init(&conn_tls_session, (server_role ? GNUTLS_SERVER : GNUTLS_CLIENT));
+	gnutls_priority_set_direct(conn_tls_session, "PERFORMANCE", NULL);
+	gnutls_credentials_set(conn_tls_session, GNUTLS_CRD_CERTIFICATE, conn_x509_cred);
+
+	if(server_role) {
+		gnutls_certificate_send_x509_rdn_sequence(conn_tls_session, 0);
+		gnutls_certificate_server_set_request(conn_tls_session, GNUTLS_CERT_REQUIRE);
+	}
 
-	if ( (server_role ? SSL_accept : SSL_connect)(conn_ssl) < 1 )
-		csync_fatal("Establishing SSL connection failed.\n");
+	gnutls_transport_set_ptr2(
+		conn_tls_session,
+		(gnutls_transport_ptr_t)conn_fd_in,
+		(gnutls_transport_ptr_t)conn_fd_out
+	);
+
+	err = gnutls_handshake(conn_tls_session);
+	switch(err) {
+	case GNUTLS_E_SUCCESS:
+		break;
+
+	case GNUTLS_E_WARNING_ALERT_RECEIVED:
+		alrt = gnutls_alert_get(conn_tls_session);
+		fprintf(
+			csync_debug_out,
+			"SSL: warning alert received from peer: %d (%s).\n",
+			alrt, gnutls_alert_get_name(alrt)
+		);
+		break;
+
+	case GNUTLS_E_FATAL_ALERT_RECEIVED:
+		alrt = gnutls_alert_get(conn_tls_session);
+		fprintf(
+			csync_debug_out,
+			"SSL: fatal alert received from peer: %d (%s).\n",
+			alrt, gnutls_alert_get_name(alrt)
+		);
+
+	default:
+		gnutls_bye(conn_tls_session, GNUTLS_SHUT_RDWR);
+		gnutls_deinit(conn_tls_session);
+		gnutls_certificate_free_credentials(conn_x509_cred);
+		gnutls_global_deinit();
+
+		csync_fatal(
+			"SSL: handshake failed: %s (%s)\n",
+			gnutls_strerror(err),
+			gnutls_strerror_name(err)
+		);
+	}
 
 	csync_conn_usessl = 1;
 
@@ -155,15 +217,15 @@
 
 int conn_check_peer_cert(const char *peername, int callfatal)
 {
-	const X509 *peercert;
+	const gnutls_datum_t *peercerts;
+	unsigned npeercerts;
 	int i, cert_is_ok = -1;
 
 	if (!csync_conn_usessl)
 		return 1;
 
-	peercert = SSL_get_peer_certificate(conn_ssl);
-
-	if (!peercert || peercert->size <= 0) {
+	peercerts = gnutls_certificate_get_peers(conn_tls_session, &npeercerts);
+	if(peercerts == NULL || npeercerts == 0) {
 		if (callfatal)
 			csync_fatal("Peer did not provide an SSL X509 cetrificate.\n");
 		csync_debug(1, "Peer did not provide an SSL X509 cetrificate.\n");
@@ -171,11 +233,11 @@
 	}
 
 	{
-		char certdata[peercert->size*2 + 1];
+		char certdata[2*peercerts[0].size + 1];
 
-		for (i=0; i<peercert->size; i++)
-			sprintf(certdata+i*2, "%02X", peercert->data[i]);
-		certdata[peercert->size*2] = 0;
+		for (i=0; i<peercerts[0].size; i++)
+			sprintf(&certdata[2*i], "%02X", peercerts[0].data[i]);
+		certdata[2*i] = 0;
 
 		SQL_BEGIN("Checking peer x509 certificate.",
 			"SELECT certdata FROM x509_cert WHERE peername = '%s'",
@@ -222,7 +284,12 @@
 	if ( !conn_clisok ) return -1;
 
 #ifdef HAVE_LIBGNUTLS_OPENSSL
-	if ( csync_conn_usessl ) SSL_free(conn_ssl);
+	if ( csync_conn_usessl ) {
+		gnutls_bye(conn_tls_session, GNUTLS_SHUT_RDWR);
+		gnutls_deinit(conn_tls_session);
+		gnutls_certificate_free_credentials(conn_x509_cred);
+		gnutls_global_deinit();
+	}
 #endif
 
 	if ( conn_fd_in != conn_fd_out) close(conn_fd_in);
@@ -239,7 +306,7 @@
 {
 #ifdef HAVE_LIBGNUTLS_OPENSSL
 	if (csync_conn_usessl)
-		return SSL_read(conn_ssl, buf, count);
+		return gnutls_record_recv(conn_tls_session, buf, count);
 	else
 #endif
 		return read(conn_fd_in, buf, count);
@@ -251,7 +318,7 @@
 
 #ifdef HAVE_LIBGNUTLS_OPENSSL
 	if (csync_conn_usessl)
-		return SSL_write(conn_ssl, buf, count);
+		return gnutls_record_send(conn_tls_session, buf, count);
 	else
 #endif
 	{
--- configure.ac
+++ configure.ac
@@ -17,11 +17,10 @@
 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 
 # Process this file with autoconf to produce a configure script.
-AC_INIT(csync2, 1.34, clifford@clifford.at)
+AC_INIT([csync2], [1.34], clifford@clifford.at)
 AM_INIT_AUTOMAKE
 
 AC_CONFIG_SRCDIR(csync2.c)
-AM_CONFIG_HEADER(config.h)
 
 # Use /etc and /var instead of $prefix/...
 test "$localstatedir" = '${prefix}/var' && localstatedir=/var
@@ -32,6 +31,7 @@
 AC_PROG_INSTALL
 AC_PROG_YACC
 AM_PROG_LEX
+PKG_PROG_PKG_CONFIG
 
 # Check for librsync.
 AC_ARG_WITH([librsync-source],
@@ -58,19 +58,10 @@
 
 if test "$enable_gnutls" != no
 then
-
-	# Check for gnuTLS.
-	AM_PATH_LIBGNUTLS(1.0.0, , [ AC_MSG_ERROR([[gnutls not found; install gnutls, gnutls-openssl and libtasn1 packages for your system or run configure with --disable-gnutls]]) ])
-
-	# This is a bloody hack for fedora core
-	CFLAGS="$CFLAGS $LIBGNUTLS_CFLAGS"
-	LIBS="$LIBS $LIBGNUTLS_LIBS -ltasn1"
-
-	# Check gnuTLS SSL compatibility lib.
-	AC_CHECK_LIB([gnutls-openssl], [SSL_new], , [AC_MSG_ERROR([[gnutls-openssl not found; install gnutls, gnutls-openssl and libtasn1 packages for your system or run configure with --disable-gnutls]])])
-
+  PKG_CHECK_MODULES([LIBGNUTLS], [gnutls] , [AC_DEFINE(HAVE_LIBGNUTLS_OPENSSL, 1, [Define to 1 if GnuTLS is available])])
 fi
 
+AM_CONFIG_HEADER([config.h])
 AC_CONFIG_FILES([Makefile])
 AC_OUTPUT
 
--- Makefile.am
+++ Makefile.am
@@ -24,6 +24,8 @@
 csync2_SOURCES = action.c cfgfile_parser.y cfgfile_scanner.l check.c	\
                  checktxt.c csync2.c daemon.c db.c error.c getrealfn.c	\
                  groups.c rsync.c update.c urlencode.c conn.c prefixsubst.c
+csync2_LDADD = @LIBGNUTLS_LIBS@
+csync2_CFLAGS = @LIBGNUTLS_CFLAGS@
 
 AM_YFLAGS = -d
 BUILT_SOURCES = cfgfile_parser.h
