From 56916c75f4d07fd93f99f57cc1ab73e9ca08b720 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 9 Dec 2025 14:44:31 +0000 Subject: [PATCH] Fix client handling of unexpected stream frames at top level - Add handling for StreamData and StreamClose at top level in client StartLoop - Log warning and continue instead of crashing on unexpected frames - Fixes "unsupported envelope type stream_close" error when frames arrive out of order Co-authored-by: dalbodeule <11470513+dalbodeule@users.noreply.github.com> --- internal/proxy/client.go | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/internal/proxy/client.go b/internal/proxy/client.go index 7682316..d92b96a 100644 --- a/internal/proxy/client.go +++ b/internal/proxy/client.go @@ -238,6 +238,30 @@ func (p *ClientProxy) StartLoop(ctx context.Context, sess dtls.Session) error { "seq": seq, }) } + case protocol.MessageTypeStreamData: + // StreamData received at top level (not expected, should be consumed by handleStreamRequest) + // This can happen if frames arrive out of order or if there's a protocol mismatch + log.Warn("received unexpected stream_data at top level, ignoring", logging.Fields{ + "stream_id": func() string { + if env.StreamData != nil { + return string(env.StreamData.ID) + } + return "unknown" + }(), + }) + continue + case protocol.MessageTypeStreamClose: + // StreamClose received at top level (not expected, should be consumed by handleStreamRequest) + // This can happen if frames arrive out of order or if there's a protocol mismatch + log.Warn("received unexpected stream_close at top level, ignoring", logging.Fields{ + "stream_id": func() string { + if env.StreamClose != nil { + return string(env.StreamClose.ID) + } + return "unknown" + }(), + }) + continue default: log.Error("received unsupported envelope type from server", logging.Fields{ "type": env.Type,