From 2dcf53db58fa78300048497dc327d366f82a8c84 Mon Sep 17 00:00:00 2001 From: Brian Duggan Date: Thu, 10 Jul 2025 14:30:47 -0400 Subject: [PATCH 1/2] Do not increment the flow-control window when the number of bytes is 0 This has a specific meaning that may not be intended see https://github.com/croservices/cro-http/pull/193 https://medium.com/coderscorner/http-2-flow-control-77e54f7fd518 WINDOW_UPDATE frame with a value 0 results in a stream error of type protocol error. --- lib/Cro/HTTP2/FrameParser.rakumod | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/lib/Cro/HTTP2/FrameParser.rakumod b/lib/Cro/HTTP2/FrameParser.rakumod index f0f4a66..81f7238 100644 --- a/lib/Cro/HTTP2/FrameParser.rakumod +++ b/lib/Cro/HTTP2/FrameParser.rakumod @@ -67,10 +67,12 @@ class Cro::HTTP2::FrameParser does Cro::Transform does Cro::ConnectionState[Cro: if $result.end-stream { start { my $bytes = $result.data.bytes; - $connection-state.window-size.emit: - Cro::HTTP2::Frame::WindowUpdate.new: - stream-identifier => 0, - flags => 0, increment => $bytes; + if $bytes > 0 { + $connection-state.window-size.emit: + Cro::HTTP2::Frame::WindowUpdate.new: + stream-identifier => 0, + flags => 0, increment => $bytes; + } } } else { From ecf7321117c6d7049dd5e833b2ea4c296492be57 Mon Sep 17 00:00:00 2001 From: Brian Duggan Date: Thu, 10 Jul 2025 15:37:18 -0400 Subject: [PATCH 2/2] Changes --- Changes | 1 + 1 file changed, 1 insertion(+) diff --git a/Changes b/Changes index 2e92e06..bcc83d0 100644 --- a/Changes +++ b/Changes @@ -1,6 +1,7 @@ Revision history for Cro::HTTP {{$NEXT}} + - Avoid sending a 0-byte WINDOW_UPDATE frame. - Permit use of updated HTTP::Pack module, Samuel Gillespie++ 0.8.10