Skip to content

dtls/connection: fix EOF handling with openssl 1.1.1e

openssl 1.1.1e does some stricker EOF handling and will throw an error if the EOF is unexpected (like in the middle of a record). As we are streaming data into openssl here, it is entirely possible that we push data from multiple buffers/packets into openssl separately.

From the openssl changelog:

Changes between 1.1.1d and 1.1.1e [17 Mar 2020] *) Properly detect EOF while reading in libssl. Previously if we hit an EOF while reading in libssl then we would report an error back to the application (SSL_ERROR_SYSCALL) but errno would be 0. We now add an error to the stack (which means we instead return SSL_ERROR_SSL) and therefore give a hint as to what went wrong. [Matt Caswell]

We can relax the EOF signalling to only return TRUE when we have stopped for any reason (EOS, error).

Will also remove a spurious EOF error from previous openssl version.

Merge request reports