From 078768f9c8c9ad323c26e9ca74649fdc94c4b452 Mon Sep 17 00:00:00 2001 From: Joachim Bauch Date: Tue, 14 Jun 2022 16:38:29 +0200 Subject: [PATCH] Fix check for async room messages received while not joined to a room. --- clientsession.go | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/clientsession.go b/clientsession.go index b2337fb..5dc1ec7 100644 --- a/clientsession.go +++ b/clientsession.go @@ -340,7 +340,12 @@ func (s *ClientSession) GetRoom() *Room { } func (s *ClientSession) getRoomJoinTime() time.Time { - return time.Unix(0, atomic.LoadInt64(&s.roomJoinTime)) + t := atomic.LoadInt64(&s.roomJoinTime) + if t == 0 { + return time.Time{} + } + + return time.Unix(0, t) } func (s *ClientSession) releaseMcuObjects() { @@ -1169,7 +1174,7 @@ func (s *ClientSession) processNatsMessage(msg *NatsMessage) *ServerMessage { if msg.Message.Event.Target == "room" { // Can happen mostly during tests where an older room NATS message // could be received by a subscriber that joined after it was sent. - if msg.SendTime.Before(s.getRoomJoinTime()) { + if joined := s.getRoomJoinTime(); joined.IsZero() || msg.SendTime.Before(joined) { log.Printf("Message %+v was sent before room was joined, ignoring", msg.Message) return nil }