From 088efc3c6937a05bbce7b354474e111f363e2e12 Mon Sep 17 00:00:00 2001 From: Gunnar Beutner Date: Sat, 18 Oct 2014 00:29:39 +0200 Subject: [PATCH] Avoid unnecessary Poll() calls --- lib/base/tlsstream.cpp | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/lib/base/tlsstream.cpp b/lib/base/tlsstream.cpp index a7664821b..a2d812171 100644 --- a/lib/base/tlsstream.cpp +++ b/lib/base/tlsstream.cpp @@ -161,7 +161,14 @@ size_t TlsStream::Read(void *buffer, size_t count) std::ostringstream msgbuf; char errbuf[120]; - if (SSL_want_read(m_SSL.get())) + bool want_read; + + { + boost::mutex::scoped_lock lock(m_SSLLock); + want_read = !SSL_pending(m_SSL.get()) || SSL_want_read(m_SSL.get()); + } + + if (want_read) m_Socket->Poll(true, false); boost::mutex::scoped_lock alock(m_IOActionLock); @@ -216,10 +223,7 @@ void TlsStream::Write(const void *buffer, size_t count) std::ostringstream msgbuf; char errbuf[120]; - bool want_write; - - if (SSL_want_write(m_SSL.get())) - m_Socket->Poll(false, true); + m_Socket->Poll(false, true); boost::mutex::scoped_lock alock(m_IOActionLock); -- 2.40.0