Summary
The Prioriser struct in lib/src/protocol/mux/h2.rs stores per-stream (urgency, incremental) tuples per RFC 9218, but the incremental flag is discarded during stream scheduling in write_streams():
priorities.sort_by(|a, b| {
let (ua, _) = self.prioriser.get(a); // incremental ignored
let (ub, _) = self.prioriser.get(b);
ua.cmp(&ub).then_with(|| a.cmp(b))
});
Per RFC 9218 §4, incremental=true streams within the same urgency level should use round-robin scheduling, while incremental=false streams should be served sequentially (complete one before starting the next).
Current behavior
All streams within the same urgency level are served in stream-ID order (FIFO), regardless of the incremental flag.
Expected behavior
incremental=false (default): serve streams sequentially within urgency level
incremental=true: interleave DATA frames across streams within urgency level
Priority
Low — urgency-based ordering already provides meaningful prioritization for the common case.
Summary
The
Prioriserstruct inlib/src/protocol/mux/h2.rsstores per-stream(urgency, incremental)tuples per RFC 9218, but theincrementalflag is discarded during stream scheduling inwrite_streams():Per RFC 9218 §4,
incremental=truestreams within the same urgency level should use round-robin scheduling, whileincremental=falsestreams should be served sequentially (complete one before starting the next).Current behavior
All streams within the same urgency level are served in stream-ID order (FIFO), regardless of the
incrementalflag.Expected behavior
incremental=false(default): serve streams sequentially within urgency levelincremental=true: interleave DATA frames across streams within urgency levelPriority
Low — urgency-based ordering already provides meaningful prioritization for the common case.