fix: 使用 context 替代 closeChan 修复 processLoop 中 send on closed channel …#34
fix: 使用 context 替代 closeChan 修复 processLoop 中 send on closed channel …#34caiwc wants to merge 2 commits into
Conversation
…panic 子 goroutine(读消息、ping 超时)在 processLoop 退出后仍可能向已关闭的 closeChan 发送数据,导致 panic: send on closed channel。 使用 context.WithCancel 替代 closeChan 作为关闭信号机制,所有子 goroutine 通过 cancelLoop() 通知退出,主循环监听 loopCtx.Done(),彻底消除竞态。 Fixes: open-dingtalk#27, open-dingtalk#28, open-dingtalk#32 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
求合并,同遇到这个问题 |
|
AI review出来的小问题,需要麻烦看卡 @caiwc 仍存在的小瑕疵(建议作者顺手修) |
@wqyenjoy 已处理,删掉了 |
…panic
子 goroutine(读消息、ping 超时)在 processLoop 退出后仍可能向已关闭的
closeChan 发送数据,导致 panic: send on closed channel。
使用 context.WithCancel 替代 closeChan 作为关闭信号机制,所有子 goroutine 通过 cancelLoop() 通知退出,主循环监听 loopCtx.Done(),彻底消除竞态。
Fixes: #27, #28, #32