diff --git a/internal/bridge/bridge.go b/internal/bridge/bridge.go index 92b34f33..79453989 100644 --- a/internal/bridge/bridge.go +++ b/internal/bridge/bridge.go @@ -413,7 +413,7 @@ func (bridge *Bridge) Close(ctx context.Context) { } // Close all users. - safe.RLock(func() { + safe.Lock(func() { for _, user := range bridge.users { user.Close() } diff --git a/internal/user/user.go b/internal/user/user.go index 8376fb61..ec010ba3 100644 --- a/internal/user/user.go +++ b/internal/user/user.go @@ -586,6 +586,8 @@ func (user *User) Close() { for _, updateCh := range xslices.Unique(maps.Values(user.updateCh)) { updateCh.CloseAndDiscardQueued() } + + user.updateCh = make(map[string]*async.QueuedChannel[imap.Update]) }, user.updateChLock) // Close the user's notify channel.