commit 8828195

Hubert Hirtz  ·  2020-11-20 18:27:59 +0000 UTC
parent cf5d743
Only send the SelfJoinEvent when channel info is complete
1 files changed,  +9, -1
+9, -1
 1@@ -117,6 +117,8 @@ type Channel struct {
 2 	TopicWho  *Prefix
 3 	TopicTime time.Time
 4 	Secret    bool
 5+
 6+	complete bool
 7 }
 8 
 9 type SessionParams struct {
10@@ -701,7 +703,6 @@ func (s *Session) handle(msg Message) (err error) {
11 				Name:    msg.Params[0],
12 				Members: map[*User]string{},
13 			}
14-			s.evts <- SelfJoinEvent{Channel: msg.Params[0]}
15 		} else if c, ok := s.channels[channelCf]; ok {
16 			if _, ok := s.users[nickCf]; !ok {
17 				s.users[nickCf] = &User{Name: msg.Prefix.Copy()}
18@@ -803,6 +804,13 @@ func (s *Session) handle(msg Message) (err error) {
19 
20 			s.channels[channelCf] = c
21 		}
22+	case rplEndofnames:
23+		channelCf := s.Casemap(msg.Params[1])
24+		if c, ok := s.channels[channelCf]; ok && !c.complete {
25+			c.complete = true
26+			s.channels[channelCf] = c
27+			s.evts <- SelfJoinEvent{Channel: c.Name}
28+		}
29 	case rplTopic:
30 		channelCf := s.Casemap(msg.Params[1])
31 		if c, ok := s.channels[channelCf]; ok {