1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 22:27:35 +00:00

Revert "LibTLS: Close the underlying socket on EOF"

This reverts commit 23febbed41.

It breaks the TestTLSHandshake test used in CI, it causes it
to hang, and all CI jobs have been hanging.
This commit is contained in:
Brian Gianforcaro 2021-09-16 00:28:18 -07:00 committed by Brian Gianforcaro
parent 9f50e288f7
commit b61eff8730
2 changed files with 13 additions and 21 deletions

View file

@ -142,21 +142,20 @@ bool TLSv12::common_connect(const struct sockaddr* saddr, socklen_t length)
return true;
}
void TLSv12::notify_client_for_app_data()
{
if (m_context.application_buffer.size() > 0) {
if (!m_has_scheduled_app_data_flush) {
deferred_invoke([this] { notify_client_for_app_data(); });
m_has_scheduled_app_data_flush = true;
}
if (on_tls_ready_to_read)
on_tls_ready_to_read(*this);
}
m_has_scheduled_app_data_flush = false;
}
void TLSv12::read_from_socket()
{
auto did_schedule_read = false;
auto notify_client_for_app_data = [&] {
if (m_context.application_buffer.size() > 0) {
if (!did_schedule_read) {
deferred_invoke([&] { read_from_socket(); });
did_schedule_read = true;
}
if (on_tls_ready_to_read)
on_tls_ready_to_read(*this);
}
};
// If there's anything before we consume stuff, let the client know
// since we won't be consuming things if the connection is terminated.
notify_client_for_app_data();
@ -189,15 +188,10 @@ void TLSv12::write_into_socket()
bool TLSv12::check_connection_state(bool read)
{
if (m_context.connection_finished)
return false;
if (!Core::Socket::is_open() || !Core::Socket::is_connected() || Core::Socket::eof()) {
// an abrupt closure (the server is a jerk)
dbgln_if(TLS_DEBUG, "Socket not open, assuming abrupt closure");
m_context.connection_finished = true;
Core::Socket::close();
return false;
}
if (m_context.critical_error) {
dbgln_if(TLS_DEBUG, "CRITICAL ERROR {} :(", m_context.critical_error);
@ -216,7 +210,7 @@ bool TLSv12::check_connection_state(bool read)
m_context.tls_buffer.size(),
m_context.application_buffer.size());
} else {
m_context.connection_finished = true;
m_context.connection_finished = false;
dbgln_if(TLS_DEBUG, "FINISHED");
}
if (!m_context.application_buffer.size()) {