Handle pending data in TLS buffers

There might be more bytes left in the current TLS record, even if
there is nothing on the underlying stream. Make sure we properly
return this when we aren't being requested to block.
pull/8/head
Pierre Ossman 5 years ago committed by Lauri Kasanen
parent 3ee909ffe6
commit b7dc4a16fe

@ -111,9 +111,11 @@ size_t TLSInStream::readTLS(U8* buf, size_t len, bool wait)
{
int n;
n = in->check(1, 1, wait);
if (n == 0)
return 0;
if (gnutls_record_check_pending(session) == 0) {
n = in->check(1, 1, wait);
if (n == 0)
return 0;
}
n = gnutls_record_recv(session, (void *) buf, len);
if (n == GNUTLS_E_INTERRUPTED || n == GNUTLS_E_AGAIN)

Loading…
Cancel
Save