private-octopus / picoquic

Minimal implementation of the QUIC protocol
MIT License
544 stars 161 forks source link

Rework scheduling in socket loop #1698

Closed huitema closed 4 months ago

huitema commented 4 months ago

Issue #1697 describes a failure mode of real time communication, with series of apparently "suspended" intervals. These effects may have multiple cause. One of these events happens when both ends are attempting to send high definition video. It seems that the code can become locked into either sending a large number of packets without spending time receiving, or receiving a large number of packets without spending time sending. This PR adds limits to how many packets can be received without sending something, or sent without attempting to receive the latest packet.

The PR also includes updates to the "mediatest" test code, to better simulate the effects of Wi-Fi suspension. That code was instrumental in pointing out that something else than WI-Fi might be creating the problem.

huitema commented 4 months ago

@suhasHere I rewrote the comments in the code for clarity.