ssb: Prevent -t=bench from stalling.
All checks were successful
Build Tilde Friends / Build-All (push) Successful in 18m50s

This commit is contained in:
Cory McWilliams 2024-12-11 20:53:25 -05:00
parent 3091747438
commit 68ae45dd58

View File

@ -665,7 +665,7 @@ static void _tf_ssb_connection_box_stream_send(tf_ssb_connection_t* connection,
static void _tf_ssb_connection_dispatch_scheduled(tf_ssb_connection_t* connection)
{
while ((connection->active_write_count == 0 || connection->closing) && connection->scheduled_count && connection->scheduled)
while (((connection->active_write_count == 0 && connection->read_back_pressure == 0) || connection->closing) && connection->scheduled_count && connection->scheduled)
{
tf_ssb_connection_scheduled_t scheduled = connection->scheduled[0];
memmove(connection->scheduled, connection->scheduled + 1, sizeof(tf_ssb_connection_scheduled_t) * (connection->scheduled_count - 1));
@ -4376,6 +4376,7 @@ void tf_ssb_connection_adjust_read_backpressure(tf_ssb_connection_t* connection,
const int k_threshold = 256;
int old_pressure = connection->read_back_pressure;
connection->read_back_pressure += delta;
_tf_ssb_connection_dispatch_scheduled(connection);
if (!connection->closing)
{
if (old_pressure < k_threshold && connection->read_back_pressure >= k_threshold)