[spdy] Add broken connection detection API to SpdySession Allow to enable continuous connection status monitoring for spdy sessions. This mechanism is built on top of HTTP2 PING frames. When enabled, a PING frame will be sent every T seconds (requestor defined), if the other end of the connection doesn't reply the connection is drained (shares logic with the preface PING mechanism). This is extremely useful for long lasting connection where the communication mostly happens from server to client (e.g., notification pushing). In this case, if the network path between client and server becomes bad, only the "sender" (i.e., the server) will notice, while the "receiver" (i.e., the client) will simply think that the other end isn't sending data. This happens because, by default, TCP doesn't use a timeout and/or keep-alive mechanism (they can be enabled, but we don't do that on mobile platforms to avoid constantly waking up the radio) and will only close a connection if it ends up retransmitting a frame too many times. So, the server side will close the connection and send a TCP reset to the other end, which will never be received due to the network path being broken. For mobile platforms this could possibly cause the radio status to be woken up more frequently, possibly causing a regression in devices battery life. On Android, we avoid that by listening for network active type of events and sending the PING frames only when the radio is already in full power mode. Bug: 1183119, b:189096305 Change-Id: I63fb64f7d63dd756a3364fb7f33dd104f96c3035 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3048165 Reviewed-by: Yutaka Hirano <yhirano@chromium.org> Commit-Queue: Stefano Duo <stefanoduo@google.com> Cr-Commit-Position: refs/heads/main@{#960036}
Chromium is an open-source browser project that aims to build a safer, faster, and more stable way for all users to experience the web.
The project's web site is https://www.chromium.org.
To check out the source code locally, don't use git clone! Instead, follow the instructions on how to get the code.
Documentation in the source is rooted in docs/README.md.
Learn how to Get Around the Chromium Source Code Directory Structure .
For historical reasons, there are some small top level directories. Now the guidance is that new top level directories are for product (e.g. Chrome, Android WebView, Ash). Even if these products have multiple executables, the code should be in subdirectories of the product.
If you found a bug, please file it at https://crbug.com/new.