From 075cfe8260e8924bc62f08980e7034e439dddbcf Mon Sep 17 00:00:00 2001
From: Simon Ruderich <simon@ruderich.org>
Date: Thu, 8 Aug 2013 21:18:39 +0200
Subject: [PATCH] Reduce duplication in initialize_tls_session_both().

---
 src/connection.c | 20 ++++++++++++--------
 1 file changed, 12 insertions(+), 8 deletions(-)

diff --git a/src/connection.c b/src/connection.c
index 3254982..a860a49 100644
--- a/src/connection.c
+++ b/src/connection.c
@@ -463,22 +463,21 @@ static int initialize_tls_session_both(int flags,
         gnutls_certificate_credentials_t *x509_cred) {
     int result;
 
+    *session = NULL;
+
     result = gnutls_init(session, flags);
     if (result != GNUTLS_E_SUCCESS) {
         LOG(ERROR,
             "initialize_tls_session_both(): gnutls_init(): %s",
             gnutls_strerror(result));
-        gnutls_certificate_free_credentials(*x509_cred);
-        return -1;
+        goto err;
     }
     result = gnutls_priority_set(*session, global_tls_priority_cache);
     if (result != GNUTLS_E_SUCCESS) {
         LOG(ERROR,
             "initialize_tls_session_both(): gnutls_priority_set(): %s",
             gnutls_strerror(result));
-        gnutls_deinit(*session);
-        gnutls_certificate_free_credentials(*x509_cred);
-        return -1;
+        goto err;
     }
     result = gnutls_credentials_set(*session,
                                     GNUTLS_CRD_CERTIFICATE, *x509_cred);
@@ -486,9 +485,7 @@ static int initialize_tls_session_both(int flags,
         LOG(ERROR,
             "initialize_tls_session_both(): gnutls_credentials_set(): %s",
             gnutls_strerror(result));
-        gnutls_deinit(*session);
-        gnutls_certificate_free_credentials(*x509_cred);
-        return -1;
+        goto err;
     }
 
 #ifdef HAVE_GNUTLS_TRANSPORT_SET_INT2
@@ -499,6 +496,13 @@ static int initialize_tls_session_both(int flags,
 #endif
 
     return 0;
+
+err:
+    if (*session) {
+        gnutls_deinit(*session);
+    }
+    gnutls_certificate_free_credentials(*x509_cred);
+    return -1;
 }
 
 
-- 
2.49.0