diff options
| author | Dennis Oberst <dennis.oberst@qt.io> | 2025-12-10 19:43:21 +0100 |
|---|---|---|
| committer | Dennis Oberst <dennis.oberst@qt.io> | 2025-12-22 11:04:42 +0100 |
| commit | 7a63e6ff48f69599a144d37b181a3aeaadc41114 (patch) | |
| tree | f6307b18fdfe843cac280c5eb5a634efc8e635a4 /tests/benchmarks/gui/animation/qanimation/rectanimation.cpp | |
| parent | bc9b70cc6d3c1ec5285c3bd91180509d1b19575d (diff) | |
This patch implements proper HTTP/2 graceful shutdown per RFC 9113,
section 6.8, with distinct handling for servers and clients:
Server-initiated shutdown (two-phase GOAWAY):
1. Initial GOAWAY with lastStreamID=2^31-1 signals shutdown imminent
2. PING measures RTT to allow in-flight stream creation to complete
3. Final GOAWAY with actual lastStreamID after RTT
Client-initiated shutdown (single GOAWAY):
Clients don't need two-phase GOAWAY because they control their own
stream creation and there's no race condition. Client sends single
GOAWAY frames.
RFC 9113 6.8 specifies that a peer MUST NOT increase the Last-Stream-ID
in successive GOAWAY frames on the same connection. An increase must be
treated as a PROTOCOL_ERROR. This patch enforces that requirement.
Ref: https://datatracker.ietf.org/doc/html/rfc9113#section-6.8-17
Unified close() API, that uses two-phase graceful shutdown for servers,
and terminates the connection, per RFC 5.4.1
Ref: https://datatracker.ietf.org/doc/html/rfc9113#section-5.4.1-2
Unified closeSession() checking during goaway with
'maybeCloseOnGoingAway'. Notably, we add a check when any stream
transitions to Closed.
Separation of m_goingAway and m_connectionAborted states:
- m_goingAway: Graceful shutdown in progress, allows completion of
existing streams.
- m_connectionAborted: Fatal error occurred, immediately prevents
further frame processing
Add extensive testing for client and server - initiated close().
Task-number: QTBUG-135049
Pick-to: 6.11 6.10
Change-Id: I4ab85d0c49712acab85bf703d07239a19b6bff92
Reviewed-by: MÃ¥rten Nordheim <marten.nordheim@qt.io>
Diffstat (limited to 'tests/benchmarks/gui/animation/qanimation/rectanimation.cpp')
0 files changed, 0 insertions, 0 deletions
