Changeset 42 in code
- Timestamp:
- Feb 7, 2020, 11:19:42 AM (5 years ago)
- Location:
- trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/downstream.go
r40 r42 235 235 func (c *downstreamConn) handleMessageRegistered(msg *irc.Message) error { 236 236 switch msg.Command { 237 case " NICK", "USER":237 case "USER": 238 238 return ircError{&irc.Message{ 239 239 Command: irc.ERR_ALREADYREGISTERED, 240 Params: []string{ 241 c.nick, 242 "You may not reregister", 243 }, 240 Params: []string{c.nick, "You may not reregister"}, 244 241 }} 242 case "NICK": 243 c.user.forEachUpstream(func(uc *upstreamConn) { 244 uc.messages <- msg 245 }) 245 246 default: 246 247 c.logger.Printf("unhandled message: %v", msg) 247 248 return newUnknownCommandError(msg.Command) 248 249 } 249 } 250 return nil 251 } -
trunk/upstream.go
r40 r42 39 39 40 40 registered bool 41 nick string 41 42 closed bool 42 43 modes modeSet … … 113 114 114 115 if name == msg.Prefix.Name { // user mode change 115 if name != c. upstream.Nick {116 if name != c.nick { 116 117 return fmt.Errorf("received MODE message for unknow nick %q", name) 117 118 } … … 152 153 c.channelModesWithParam = msg.Params[5] 153 154 } 155 case "NICK": 156 if len(msg.Params) < 1 { 157 return newNeedMoreParamsError(msg.Command) 158 } 159 newNick := msg.Params[0] 160 161 if msg.Prefix.Name == c.nick { 162 c.logger.Printf("changed nick from %q to %q", c.nick, newNick) 163 c.nick = newNick 164 } 165 166 for _, ch := range c.channels { 167 if membership, ok := ch.Members[msg.Prefix.Name]; ok { 168 delete(ch.Members, msg.Prefix.Name) 169 ch.Members[newNick] = membership 170 } 171 } 172 173 c.user.forEachDownstream(func(dc *downstreamConn) { 174 dc.messages <- msg 175 }) 154 176 case "JOIN": 155 177 if len(msg.Params) < 1 { … … 158 180 159 181 for _, ch := range strings.Split(msg.Params[0], ",") { 160 if msg.Prefix.Name == c. upstream.Nick {182 if msg.Prefix.Name == c.nick { 161 183 c.logger.Printf("joined channel %q", ch) 162 184 c.channels[ch] = &upstreamChannel{ … … 182 204 183 205 for _, ch := range strings.Split(msg.Params[0], ",") { 184 if msg.Prefix.Name == c. upstream.Nick {206 if msg.Prefix.Name == c.nick { 185 207 c.logger.Printf("parted channel %q", ch) 186 208 delete(c.channels, ch) … … 296 318 defer c.Close() 297 319 320 c.nick = c.upstream.Nick 298 321 c.messages <- &irc.Message{ 299 322 Command: "NICK",
Note:
See TracChangeset
for help on using the changeset viewer.