From 6e0be5f3d9b162d1cfaa1ae7fff5133b5cae92fc Mon Sep 17 00:00:00 2001 From: contact Date: Mon, 8 Nov 2021 18:42:36 +0000 Subject: [PATCH] Check context cancellation in handleServiceServerNotice This prevents this function from blocking forever if it exceeds the deadline. git-svn-id: file:///srv/svn/repo/suika/trunk@678 f0ae65fe-ee39-954e-97ec-027ff2717ef4 --- service.go | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/service.go b/service.go index 06ed9ec..6a15e94 100644 --- a/service.go +++ b/service.go @@ -1046,8 +1046,13 @@ func handleServiceServerNotice(ctx context.Context, dc *downstreamConn, params [ Command: "NOTICE", Params: []string{"$" + dc.srv.Hostname, text}, } + var err error dc.srv.forEachUser(func(u *user) { - u.events <- eventBroadcast{broadcastMsg} + select { + case <-ctx.Done(): + err = ctx.Err() + case u.events <- eventBroadcast{broadcastMsg}: + } }) - return nil + return err }