async fn forward_mutated_frames(
parser: &mut ControlStreamParser,
data: &[u8],
refused_seen: &mut u64,
send: &mut SendStream,
stream_id: u64,
key: StreamKey,
pending: &mut PendingQueue,
deferred: &mut DeferredEffects,
side: ProxySide,
ctx: &ForwardCtx,
report: &Reporter<'_>,
) -> Result<Flow, ProxyError>Expand description
Feed bytes into the capturing control parser, then execute the hook’s decision on each completed frame.
This pipe owns the forwarding path: nothing reaches the far side except what this function writes. A frame the decoder refuses is therefore written verbatim rather than skipped — no hook can be consulted about a message that did not decode, but dropping it would remove a control message from a session neither peer knows is missing one.