Call tls_close() in libevent TLS wrapper of syslogd when the other
authorbluhm <bluhm@openbsd.org>
Tue, 22 Mar 2022 22:58:00 +0000 (22:58 +0000)
committerbluhm <bluhm@openbsd.org>
Tue, 22 Mar 2022 22:58:00 +0000 (22:58 +0000)
commit1d77af830616c0fb6728d528bdf92c3edb1f417e
treef1b3482665df6c08cb559f7b85b1d6ab6fa34b12
parentce8e0faab26a848cb1842e1d9e17e9611a0896b3
Call tls_close() in libevent TLS wrapper of syslogd when the other
side terminates the TLS connection.  It results in a proper shutdown
and the TLS peer has a chance to detect errors.  This is expecially
important for the client side.  Due to the reduced TLS 1.3 handshake,
errors might be undetected and log messages dropped silently.  By
doing a matching TLS shutdown on his side, the client can receive
the error.
Instead of checking socket writability and calling tls_close()
repeatedly, syslogd calls it only once.  As the other side has
closed the connection anyway it is our turn to write the shutdown
message.  Do not care about errors here and avoid complexity.
OK tb@
usr.sbin/syslogd/evbuffer_tls.c