]> ruderich.org/simon Gitweb - tlsproxy/tlsproxy.git/blobdiff - src/connection.c
Fix flags parameter type of initialize_tls_session_both().
[tlsproxy/tlsproxy.git] / src / connection.c
index abd89758c463c5399ce1a51f0672442d269b201c..d69c2faf6c30874bb8f093ffeed0e260b2f7685a 100644 (file)
@@ -59,7 +59,7 @@ static int initialize_tls_session_client(int peer_socket,
 static int initialize_tls_session_server(int peer_socket,
         gnutls_session_t *session,
         gnutls_certificate_credentials_t *x509_cred);
-static int initialize_tls_session_both(int flags,
+static int initialize_tls_session_both(unsigned int flags,
         int peer_socket,
         gnutls_session_t *session,
         gnutls_certificate_credentials_t *x509_cred);
@@ -144,7 +144,7 @@ void handle_connection(int client_socket) {
     }
 
     if (parse_request(buffer, host, port, &version_minor) != 0) {
-        LOG(WARNING, "bad request: %s", buffer);
+        LOG(WARNING, "bad request: >%s<", buffer);
         send_bad_request(client_fd_write);
         goto out;
     }
@@ -457,28 +457,27 @@ static int initialize_tls_session_server(int peer_socket,
     return initialize_tls_session_both(GNUTLS_CLIENT,
                                        peer_socket, session, x509_cred);
 }
-static int initialize_tls_session_both(int flags,
+static int initialize_tls_session_both(unsigned int flags,
         int peer_socket,
         gnutls_session_t *session,
         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;
 }