]> granicus.if.org Git - icinga2/commitdiff
Fix another potential hang in TlsStream::Handshake
authorGunnar Beutner <gunnar@beutner.name>
Fri, 27 Feb 2015 08:03:23 +0000 (09:03 +0100)
committerGunnar Beutner <gunnar@beutner.name>
Fri, 27 Feb 2015 08:03:23 +0000 (09:03 +0100)
refs #8550

lib/base/stdiostream.cpp
lib/base/tlsstream.cpp

index bf9c928e83460afbbbd70c18239e09e8ab6d4614..140117b98be9c166c851c28ea94d93683af0b0f7 100644 (file)
@@ -63,5 +63,5 @@ void StdioStream::Close(void)
 
 bool StdioStream::IsEof(void) const
 {
-       return m_InnerStream->eof();
+       return !m_InnerStream->good();
 }
index c4fb0d72d78367cf6497dc7f357084b3e12a29c3..7d9c0ce2644b6b9288398d443a916b25a2ad2425 100644 (file)
@@ -131,7 +131,7 @@ void TlsStream::OnEvent(int revents)
        char buffer[512];
 
        if (m_CurrentAction == TlsActionNone) {
-               if (revents & POLLIN)
+               if (revents & (POLLIN | POLLERR | POLLHUP))
                        m_CurrentAction = TlsActionRead;
                else if (m_SendQ->GetAvailableBytes() > 0 && (revents & POLLOUT))
                        m_CurrentAction = TlsActionWrite;