Reduce per-frame flush overhead

This commit is contained in:
Andrey Akifev
2026-02-16 12:49:49 +07:00
parent dddf9f30dc
commit e54fb3fffc

View File

@@ -263,7 +263,14 @@ where
} }
} }
client_writer.flush().await.map_err(ProxyError::Io) // Avoid unconditional per-frame flush (throughput killer on large downloads).
// Flush only when low-latency ack semantics are requested or when
// CryptoWriter has buffered pending ciphertext that must be drained.
if quickack || client_writer.has_pending() {
client_writer.flush().await.map_err(ProxyError::Io)?;
}
Ok(())
} }
async fn write_client_ack<W>( async fn write_client_ack<W>(
@@ -283,5 +290,6 @@ where
.write_all(&bytes) .write_all(&bytes)
.await .await
.map_err(ProxyError::Io)?; .map_err(ProxyError::Io)?;
// ACK should remain low-latency.
client_writer.flush().await.map_err(ProxyError::Io) client_writer.flush().await.map_err(ProxyError::Io)
} }