commit fd39397

Hubert Hirtz  ·  2020-11-23 15:37:55 +0000 UTC
parent 2992bd3
Don't forward outdated typing timeouts

The channel might have been parted, or the user might have parted from
the channel before receiving the timeout from Typings, thus causing a
segfault.
1 files changed,  +10, -2
+10, -2
 1@@ -498,12 +498,20 @@ func (s *Session) run() {
 2 				err = s.handleStart(msg)
 3 			}
 4 		case t, ok := <-s.typings.Stops():
 5+			if !ok {
 6+				break
 7+			}
 8+			u, ok := s.users[t.Name]
 9+			if !ok {
10+				break
11+			}
12+			c, ok := s.channels[t.Target]
13 			if !ok {
14 				break
15 			}
16 			s.evts <- TagEvent{
17-				User:   s.users[t.Name].Name,
18-				Target: s.channels[t.Target].Name,
19+				User:   u.Name,
20+				Target: c.Name,
21 				Typing: TypingDone,
22 				Time:   time.Now(),
23 			}