mirror of
https://github.com/Icinga/icinga2.git
synced 2025-07-26 07:04:37 +02:00
parent
b6a799d53e
commit
9a0107d360
@ -189,7 +189,7 @@ void TlsStream::OnEvent(int revents)
|
|||||||
VERIFY(!"Invalid TlsAction");
|
VERIFY(!"Invalid TlsAction");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (rc < 0) {
|
if (rc <= 0) {
|
||||||
int err = SSL_get_error(m_SSL.get(), rc);
|
int err = SSL_get_error(m_SSL.get(), rc);
|
||||||
|
|
||||||
switch (err) {
|
switch (err) {
|
||||||
@ -208,7 +208,7 @@ void TlsStream::OnEvent(int revents)
|
|||||||
|
|
||||||
Close();
|
Close();
|
||||||
|
|
||||||
break;
|
return;
|
||||||
default:
|
default:
|
||||||
m_ErrorCode = ERR_peek_error();
|
m_ErrorCode = ERR_peek_error();
|
||||||
m_ErrorOccurred = true;
|
m_ErrorOccurred = true;
|
||||||
@ -224,7 +224,7 @@ void TlsStream::OnEvent(int revents)
|
|||||||
|
|
||||||
Close();
|
Close();
|
||||||
|
|
||||||
break;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -242,9 +242,11 @@ void TlsStream::OnEvent(int revents)
|
|||||||
|
|
||||||
while (m_RecvQ->IsDataAvailable() && IsHandlingEvents())
|
while (m_RecvQ->IsDataAvailable() && IsHandlingEvents())
|
||||||
SignalDataAvailable();
|
SignalDataAvailable();
|
||||||
|
}
|
||||||
|
|
||||||
if (m_Shutdown && !m_SendQ->IsDataAvailable())
|
if (m_Shutdown && !m_SendQ->IsDataAvailable()) {
|
||||||
Close();
|
lock.unlock();
|
||||||
|
Close();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -311,6 +313,7 @@ void TlsStream::Write(const void *buffer, size_t count)
|
|||||||
void TlsStream::Shutdown(void)
|
void TlsStream::Shutdown(void)
|
||||||
{
|
{
|
||||||
m_Shutdown = true;
|
m_Shutdown = true;
|
||||||
|
ChangeEvents(POLLOUT);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -318,10 +321,23 @@ void TlsStream::Shutdown(void)
|
|||||||
*/
|
*/
|
||||||
void TlsStream::Close(void)
|
void TlsStream::Close(void)
|
||||||
{
|
{
|
||||||
|
<<<<<<< HEAD
|
||||||
if (!m_Eof) {
|
if (!m_Eof) {
|
||||||
m_Eof = true;
|
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();
|
SignalDataAvailable();
|
||||||
}
|
|
||||||
|
|
||||||
Stream::Close();
|
Stream::Close();
|
||||||
|
|
||||||
|
@ -78,8 +78,7 @@ void HttpServerConnection::Disconnect(void)
|
|||||||
ApiListener::Ptr listener = ApiListener::GetInstance();
|
ApiListener::Ptr listener = ApiListener::GetInstance();
|
||||||
listener->RemoveHttpClient(this);
|
listener->RemoveHttpClient(this);
|
||||||
|
|
||||||
if (!m_Stream->IsEof())
|
m_Stream->Shutdown();
|
||||||
m_Stream->Shutdown();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool HttpServerConnection::ProcessMessage(void)
|
bool HttpServerConnection::ProcessMessage(void)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user