Avoid unnecessary Poll() calls

This commit is contained in:
Gunnar Beutner 2014-10-18 00:29:39 +02:00
parent 92a29e2f5b
commit 088efc3c69
1 changed files with 9 additions and 5 deletions

View File

@ -161,7 +161,14 @@ size_t TlsStream::Read(void *buffer, size_t count)
std::ostringstream msgbuf; std::ostringstream msgbuf;
char errbuf[120]; 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); m_Socket->Poll(true, false);
boost::mutex::scoped_lock alock(m_IOActionLock); boost::mutex::scoped_lock alock(m_IOActionLock);
@ -216,10 +223,7 @@ void TlsStream::Write(const void *buffer, size_t count)
std::ostringstream msgbuf; std::ostringstream msgbuf;
char errbuf[120]; char errbuf[120];
bool want_write; m_Socket->Poll(false, true);
if (SSL_want_write(m_SSL.get()))
m_Socket->Poll(false, true);
boost::mutex::scoped_lock alock(m_IOActionLock); boost::mutex::scoped_lock alock(m_IOActionLock);