Fix KTLS with BIO_new_connect
authorBernd Edlinger <bernd.edlinger@hotmail.de>
Mon, 16 May 2022 05:06:42 +0000 (07:06 +0200)
committerBernd Edlinger <bernd.edlinger@hotmail.de>
Tue, 17 May 2022 11:16:03 +0000 (13:16 +0200)
commit598bd7741568a1aae678e5472f18aae1ab991e8d
tree275f4a2f20b08cc2441650dfb8f21b69e02015e0
parent524bac570702a79366b85ff1f66e07d3e002370c
Fix KTLS with BIO_new_connect

When a socket connection is done using BIO_new_connect,
the ktls_enable is done too early, and fails with ENOTCONN.
Therefore the KLTS ioctl will fail later with ENOPROTOOPT.
Fix that by doing the ktls_enable after the connection
succeeded, not when the socket is created as that will
always fail.

One example where this happens is doit_localhost in
test/ssl_old_test.c, and therefore, contrary to the expectation
the -client_ktls option did never enable the client KTLS
connection, but this was not noticed, because there was no
diagnostic output, and it was only visible with strace output.

Also enhanced the ssl_old_test -client_ktls/-server_ktls
options together with -v option to print a summary line
if and how KTLS was negotiated in server and client.

While I am already there adjusted the usage info of
the -s_cert, -s_key commands, and allow -time to print the
timings of ktls connections.

Reviewed-by: Matt Caswell <matt@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/18318)
crypto/bio/bio_sock.c
crypto/bio/bio_sock2.c
crypto/bio/bss_conn.c
test/ssl_old_test.c