char buffer[512];
if (m_CurrentAction == TlsActionNone) {
- if (m_SendQ->GetAvailableBytes() > 0)
+ if (m_SendQ->GetAvailableBytes() > 0 && (revents & POLLOUT))
m_CurrentAction = TlsActionWrite;
else
m_CurrentAction = TlsActionRead;
if (rc > 0) {
if (m_SendQ->GetAvailableBytes() > 0) {
m_CurrentAction = TlsActionWrite;
- ChangeEvents(POLLOUT);
+ ChangeEvents(POLLIN|POLLOUT);
} else {
m_CurrentAction = TlsActionNone;
ChangeEvents(POLLIN);
break;
case SSL_ERROR_WANT_WRITE:
m_Retry = true;
- ChangeEvents(POLLOUT);
+ ChangeEvents(POLLIN|POLLOUT);
break;
case SSL_ERROR_ZERO_RETURN:
m_SendQ->Write(buffer, count);
- ChangeEvents(POLLOUT);
+ ChangeEvents(POLLIN|POLLOUT);
}
/**