]> source.dussan.org Git - tigervnc.git/commitdiff
Remove early data check for TLSInStream
authorPierre Ossman <ossman@cendio.se>
Thu, 10 Jun 2021 14:32:29 +0000 (16:32 +0200)
committerPierre Ossman <ossman@cendio.se>
Fri, 11 Jun 2021 07:42:44 +0000 (09:42 +0200)
Having this early check means that we somewhat randomly get different
exception behaviours on errors in deeper layers as some exceptions are
allowed to propagate unhindered and some are not (since they are thrown
in the pull function).

common/rdr/TLSInStream.cxx

index e6c9c9063f264468984c2568509e11b2c60552a1..94e6109b38a0a0f16ad3de63c4f02caa00e02dde 100644 (file)
@@ -93,17 +93,15 @@ size_t TLSInStream::readTLS(U8* buf, size_t len)
 {
   int n;
 
-  if (gnutls_record_check_pending(session) == 0) {
-    if (!in->hasData(1))
-      return 0;
-  }
-
   n = gnutls_record_recv(session, (void *) buf, len);
   if (n == GNUTLS_E_INTERRUPTED || n == GNUTLS_E_AGAIN)
     return 0;
 
   if (n < 0) throw TLSException("readTLS", n);
 
+  if (n == 0)
+    throw EndOfStream();
+
   return n;
 }