dtls/connection: fix EOF handling with openssl 1.1.1e
authorMatthew Waters <matthew@centricular.com>
Thu, 26 Mar 2020 23:34:25 +0000 (10:34 +1100)
committerMatthew Waters <matthew@centricular.com>
Fri, 27 Mar 2020 00:43:53 +0000 (11:43 +1100)
commit8da177c0bfb9e223aaa8e5e698a568e5f42a0e82
tree64f73011eefb05cff3f0af6b5235239b52da6b47
parent319a5e5779e1bae7e26fa157fd24f57fc9b9f1e6
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.
ext/dtls/gstdtlsconnection.c