diff options
author | Daiki Ueno <ueno@gnu.org> | 2022-07-28 07:00:20 +0000 |
---|---|---|
committer | Daiki Ueno <ueno@gnu.org> | 2022-07-28 07:00:20 +0000 |
commit | 6b10837acc77d7d8323bafb27d114753508d43c8 (patch) | |
tree | d7a74ee52a45eb0dddf350efe692cf6c8dc6f89b | |
parent | 62bbe72cba0599883e5a79345029faaf15b4a19b (diff) | |
parent | f7160e4fb970b4ba6f96e85e21f8395eae735d95 (diff) | |
download | gnutls-6b10837acc77d7d8323bafb27d114753508d43c8.tar.gz |
Merge branch 'wip/dueno/socket-no-wrap' into 'master'
Make gnutls-cli work with KTLS
See merge request gnutls/gnutls!1617
-rw-r--r-- | lib/handshake.c | 9 | ||||
-rw-r--r-- | src/socket.c | 16 |
2 files changed, 16 insertions, 9 deletions
diff --git a/lib/handshake.c b/lib/handshake.c index 3886306eb4..cf025a84f6 100644 --- a/lib/handshake.c +++ b/lib/handshake.c @@ -2861,7 +2861,14 @@ int gnutls_handshake(gnutls_session_t session) #ifdef ENABLE_KTLS if (_gnutls_config_is_ktls_enabled()) { - _gnutls_ktls_enable(session); + if (session->internals.pull_func || + session->internals.push_func) { + _gnutls_audit_log(session, + "Not enabling KTLS with " + "custom pull/push function\n"); + } else { + _gnutls_ktls_enable(session); + } } #endif } diff --git a/src/socket.c b/src/socket.c index 39f18dbe18..36ac292700 100644 --- a/src/socket.c +++ b/src/socket.c @@ -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)) { |