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);
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);