VERIFY(!"Invalid TlsAction");
}
- if (rc < 0) {
+ if (rc <= 0) {
int err = SSL_get_error(m_SSL.get(), rc);
switch (err) {
Close();
- break;
+ return;
default:
m_ErrorCode = ERR_peek_error();
m_ErrorOccurred = true;
Close();
- break;
+ return;
}
}
while (m_RecvQ->IsDataAvailable() && IsHandlingEvents())
SignalDataAvailable();
+ }
- if (m_Shutdown && !m_SendQ->IsDataAvailable())
- Close();
+ if (m_Shutdown && !m_SendQ->IsDataAvailable()) {
+ lock.unlock();
+ Close();
}
}
void TlsStream::Shutdown(void)
{
m_Shutdown = true;
+ ChangeEvents(POLLOUT);
}
/**
*/
void TlsStream::Close(void)
{
+<<<<<<< HEAD
if (!m_Eof) {
m_Eof = true;
+=======
+ CloseInternal(false);
+}
+
+void TlsStream::CloseInternal(bool inDestructor)
+{
+ if (m_Eof)
+ return;
+
+ m_Eof = true;
+
+ if (!inDestructor)
+>>>>>>> 2dc385e... Fix memory/thread leak in the HttpServerConnection class
SignalDataAvailable();
- }
Stream::Close();
ApiListener::Ptr listener = ApiListener::GetInstance();
listener->RemoveHttpClient(this);
- if (!m_Stream->IsEof())
- m_Stream->Shutdown();
+ m_Stream->Shutdown();
}
bool HttpServerConnection::ProcessMessage(void)