From: Gunnar Beutner Date: Fri, 17 Oct 2014 22:29:39 +0000 (+0200) Subject: Avoid unnecessary Poll() calls X-Git-Tag: v2.2.0~341 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=088efc3c6937a05bbce7b354474e111f363e2e12;p=icinga2 Avoid unnecessary Poll() calls --- 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);