From f9cffda0e09470c41afad6da1dd8ac75ccde068f Mon Sep 17 00:00:00 2001 From: AnotherTest Date: Tue, 19 May 2020 22:35:19 +0430 Subject: [PATCH] LibTLS: Flush some packets as soon as more packets are written This seems like a better compromise between throughput and latency, and it doesn't _really_ affect the performance, so let's just compromise. --- Libraries/LibTLS/Record.cpp | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/Libraries/LibTLS/Record.cpp b/Libraries/LibTLS/Record.cpp index 423411cb73..1e43c0ceda 100644 --- a/Libraries/LibTLS/Record.cpp +++ b/Libraries/LibTLS/Record.cpp @@ -34,11 +34,22 @@ namespace TLS { void TLSv12::write_packet(ByteBuffer& packet) { m_context.tls_buffer.append(packet.data(), packet.size()); - if (!m_has_scheduled_write_flush && m_context.connection_status > ConnectionStatus::Disconnected) { + if (m_context.connection_status > ConnectionStatus::Disconnected) { + if (!m_has_scheduled_write_flush) { #ifdef TLS_DEBUG - dbg() << "Scheduling write of " << m_context.tls_buffer.size(); + dbg() << "Scheduling write of " << m_context.tls_buffer.size(); #endif - deferred_invoke([this](auto&) { write_into_socket(); }); + deferred_invoke([this](auto&) { write_into_socket(); }); + m_has_scheduled_write_flush = true; + } else { + // multiple packet are available, let's flush some out +#ifdef TLS_DEBUG + dbg() << "Flushing scheduled write of " << m_context.tls_buffer.size(); +#endif + write_into_socket(); + // the deferred invoke is still in place + m_has_scheduled_write_flush = true; + } } }