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;
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,9 +223,6 @@ 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);
boost::mutex::scoped_lock alock(m_IOActionLock);