From ba35a0a96de1c3744ce0ceea83db4337a7252df4 Mon Sep 17 00:00:00 2001 From: Cnly Date: Tue, 25 Jun 2019 22:45:53 +0800 Subject: [PATCH] Fix nil pointer and goroutine safety in typing cache Signed-off-by: Alex Chen --- typingserver/cache/cache.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/typingserver/cache/cache.go b/typingserver/cache/cache.go index 831c6f9b3..04de0e822 100644 --- a/typingserver/cache/cache.go +++ b/typingserver/cache/cache.go @@ -62,11 +62,12 @@ func (t *TypingCache) GetTypingUsersIfUpdatedAfter( roomID string, position int64, ) (users []string, updated bool) { t.RLock() + defer t.RUnlock() + roomData, ok := t.data[roomID] - userSet := roomData.userSet - t.RUnlock() if ok && roomData.syncPosition > position { updated = true + userSet := roomData.userSet users = make([]string, 0, len(userSet)) for userID := range userSet { users = append(users, userID)