From: Nick Mathewson Date: Mon, 26 Apr 2004 23:19:21 +0000 (+0000) Subject: Some versions of openssl have an SSL_pending function that erroneously X-Git-Tag: debian-version-0.0.5+0.0.6rc3-1~24 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=873564ea9ce6e9ec5a07bc2a42ffd54e34b97c72;p=thirdparty%2Ftor.git Some versions of openssl have an SSL_pending function that erroneously returns bytes when there is a non-application record pending. I have no idea when/why this would even happen, but let's catch it and make sure tor_tls_get_pending_bytes stays correct. svn:r1727 --- diff --git a/src/common/tortls.c b/src/common/tortls.c index 738556d247..e46b1a9097 100644 --- a/src/common/tortls.c +++ b/src/common/tortls.c @@ -603,7 +603,14 @@ int tor_tls_get_pending_bytes(tor_tls *tls) { tor_assert(tls); +#if OPENSSL_VERSION_NUMBER < 0x0090700fl + if (tls->ssl->rstate == SSL_ST_READ_BODY) + return 0; + if (tls->ssl->s3->rrec.type != SSL3_RT_APPLICATION_DATA) + return 0; +#endif return SSL_pending(tls->ssl); + } /* Return the number of bytes read across the underlying socket. */