]> git.ipfire.org Git - thirdparty/gnutls.git/commitdiff
socket: only set pull/push functions when --save-*-trace is used
authorDaiki Ueno <ueno@gnu.org>
Tue, 26 Jul 2022 02:39:57 +0000 (11:39 +0900)
committerDaiki Ueno <ueno@gnu.org>
Wed, 27 Jul 2022 14:09:57 +0000 (23:09 +0900)
This allows gnutls-cli to use KTLS for the transport, unless either
--save-client-trace or --save-server-trace is used.

Signed-off-by: Daiki Ueno <ueno@gnu.org>
src/socket.c

index 39f18dbe186f1e2a33d12bd2c21346537cb25a98..36ac2927003a2d16ac22af97b52c952771f9d045 100644 (file)
@@ -586,16 +586,16 @@ socket_open2(socket_st * hd, const char *hostname, const char *service,
                                gnutls_session_set_data(hd->session, hd->rdata.data, hd->rdata.size);
                        }
 
-                       if (server_trace)
+                       if (client_trace || server_trace) {
                                hd->server_trace = server_trace;
-
-                       if (client_trace)
                                hd->client_trace = client_trace;
-
-                       gnutls_transport_set_push_function(hd->session, wrap_push);
-                       gnutls_transport_set_pull_function(hd->session, wrap_pull);
-                       gnutls_transport_set_pull_timeout_function(hd->session, wrap_pull_timeout_func);
-                       gnutls_transport_set_ptr(hd->session, hd);
+                               gnutls_transport_set_push_function(hd->session, wrap_push);
+                               gnutls_transport_set_pull_function(hd->session, wrap_pull);
+                               gnutls_transport_set_pull_timeout_function(hd->session, wrap_pull_timeout_func);
+                               gnutls_transport_set_ptr(hd->session, hd);
+                       } else {
+                               gnutls_transport_set_int(hd->session, hd->fd);
+                       }
                }
 
                if (!(flags & SOCKET_FLAG_RAW) && !(flags & SOCKET_FLAG_SKIP_INIT)) {