Loading src/httpd.cpp +8 −6 Original line number Diff line number Diff line Loading @@ -1294,11 +1294,11 @@ void libhttppp::HttpEvent::Http3StreamEvent(netplus::socket *sock, size_t sent = total_sent; size_t empty_streak = 0; static constexpr size_t max_empty = 500; size_t pump_counter = 0; uint8_t lbuf[8]; while (sent < content_length) { if (++pump_counter % 4 == 0) // Pump incoming on every iteration to keep flow // control responsive for large transfers. q->pumpIncoming(); ResponseEvent(*tr, h3tid, 0); Loading Loading @@ -1335,10 +1335,12 @@ void libhttppp::HttpEvent::Http3StreamEvent(netplus::socket *sock, << content_length << std::endl; break; } // Sleep to let upstream produce data — mirrors // H2's event-driven break-and-resume approach. // Brief sleep to let upstream produce data. // Use a short 1ms sleep instead of 10ms to // avoid stalling large streaming transfers // (e.g. images) over HTTP/3. std::this_thread::sleep_for( std::chrono::milliseconds(10)); std::chrono::milliseconds(1)); } } Loading Loading
src/httpd.cpp +8 −6 Original line number Diff line number Diff line Loading @@ -1294,11 +1294,11 @@ void libhttppp::HttpEvent::Http3StreamEvent(netplus::socket *sock, size_t sent = total_sent; size_t empty_streak = 0; static constexpr size_t max_empty = 500; size_t pump_counter = 0; uint8_t lbuf[8]; while (sent < content_length) { if (++pump_counter % 4 == 0) // Pump incoming on every iteration to keep flow // control responsive for large transfers. q->pumpIncoming(); ResponseEvent(*tr, h3tid, 0); Loading Loading @@ -1335,10 +1335,12 @@ void libhttppp::HttpEvent::Http3StreamEvent(netplus::socket *sock, << content_length << std::endl; break; } // Sleep to let upstream produce data — mirrors // H2's event-driven break-and-resume approach. // Brief sleep to let upstream produce data. // Use a short 1ms sleep instead of 10ms to // avoid stalling large streaming transfers // (e.g. images) over HTTP/3. std::this_thread::sleep_for( std::chrono::milliseconds(10)); std::chrono::milliseconds(1)); } } Loading