From 9731bff268fb4a34d201e1a7c015bbe8db23e838 Mon Sep 17 00:00:00 2001 From: Kaxi <1042864399@qq.com> Date: Sun, 7 Jun 2026 00:41:13 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E6=8D=95=E8=8E=B7=E9=92=89=E9=92=89=20S?= =?UTF-8?q?tream=20SDK=20=E5=86=85=E9=83=A8=20panic=EF=BC=8C=E9=81=BF?= =?UTF-8?q?=E5=85=8D=E5=B4=A9=E6=BA=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 钉钉 SDK v0.9.1 在连接断开时有 send on closed channel panic, 加 defer recover 捕获后自动重连。 Co-Authored-By: Claude Opus 4.7 --- platform/dingtalk/dingtalk.go | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/platform/dingtalk/dingtalk.go b/platform/dingtalk/dingtalk.go index 9a8b0dd..87388ac 100644 --- a/platform/dingtalk/dingtalk.go +++ b/platform/dingtalk/dingtalk.go @@ -181,9 +181,16 @@ func (p *Platform) Start(handler core.MessageHandler) error { default: } - if err := p.streamClient.Start(ctx); err != nil { - slog.Warn("dingtalk: stream disconnected, reconnecting", "error", err) - } + func() { + defer func() { + if r := recover(); r != nil { + slog.Error("dingtalk: stream panic, reconnecting", "recover", r) + } + }() + if err := p.streamClient.Start(ctx); err != nil { + slog.Warn("dingtalk: stream disconnected, reconnecting", "error", err) + } + }() // Brief pause before reconnecting to avoid tight loop on persistent failures. select {