mirror of
https://github.com/Icinga/icinga2.git
synced 2025-07-23 21:55:03 +02:00
parent
fabf37e79c
commit
2dc385e31b
@ -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,11 +242,12 @@ void TlsStream::OnEvent(int revents)
|
|||||||
|
|
||||||
while (m_RecvQ->IsDataAvailable() && IsHandlingEvents())
|
while (m_RecvQ->IsDataAvailable() && IsHandlingEvents())
|
||||||
SignalDataAvailable();
|
SignalDataAvailable();
|
||||||
|
|
||||||
if (m_Shutdown && !m_SendQ->IsDataAvailable())
|
|
||||||
Close();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (m_Shutdown && !m_SendQ->IsDataAvailable()) {
|
||||||
|
lock.unlock();
|
||||||
|
Close();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void TlsStream::HandleError(void) const
|
void TlsStream::HandleError(void) const
|
||||||
@ -312,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);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -324,10 +326,13 @@ void TlsStream::Close(void)
|
|||||||
|
|
||||||
void TlsStream::CloseInternal(bool inDestructor)
|
void TlsStream::CloseInternal(bool inDestructor)
|
||||||
{
|
{
|
||||||
if (!m_Eof && !inDestructor) {
|
if (m_Eof)
|
||||||
m_Eof = true;
|
return;
|
||||||
|
|
||||||
|
m_Eof = true;
|
||||||
|
|
||||||
|
if (!inDestructor)
|
||||||
SignalDataAvailable();
|
SignalDataAvailable();
|
||||||
}
|
|
||||||
|
|
||||||
SocketEvents::Unregister();
|
SocketEvents::Unregister();
|
||||||
|
|
||||||
|
@ -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