broadcastUpdate 此前把同一个 backend.Update 对象推送到明文/TLS 两个 监听器的推送通道,两个 go-imap listenUpdates goroutine 各自对 update.Done() 执行 close,二次关闭同一 channel 触发 panic (server.go:373 close of closed channel)。 修复:按监听器克隆 Update 对象(载荷共享、Done channel 独立), 新增回归测试:两个监听器收到的更新 Done channel 必须不同,且各自 close 不 panic;全量 -race 通过