Changeset 69 in code for trunk/upstream.go
- Timestamp:
- Feb 19, 2020, 5:25:19 PM (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/upstream.go
r68 r69 92 92 } 93 93 94 func (uc *upstreamConn) prefix() *irc.Prefix { 95 return &irc.Prefix{ 96 Name: uc.nick, 97 User: uc.upstream.Username, 98 // TODO: fill the host? 99 } 100 } 101 94 102 func (uc *upstreamConn) Close() error { 95 103 if uc.closed { … … 118 126 return nil 119 127 case "MODE": 128 if msg.Prefix == nil { 129 return fmt.Errorf("missing prefix") 130 } 131 120 132 var name, modeStr string 121 133 if err := parseMessageParams(msg, &name, &modeStr); err != nil { … … 136 148 return err 137 149 } 138 } 139 140 uc.user.forEachDownstream(func(dc *downstreamConn) { 141 dc.SendMessage(msg) 142 }) 150 151 uc.user.forEachDownstream(func(dc *downstreamConn) { 152 dc.SendMessage(&irc.Message{ 153 Prefix: dc.marshalUserPrefix(uc, msg.Prefix), 154 Command: "MODE", 155 Params: []string{dc.marshalChannel(uc, name), modeStr}, 156 }) 157 }) 158 } 143 159 case "NOTICE": 144 160 uc.logger.Print(msg) … … 177 193 } 178 194 } 179 180 uc.user.forEachDownstream(func(dc *downstreamConn) {181 dc.SendMessage(msg)182 })183 195 case "JOIN": 196 if msg.Prefix == nil { 197 return fmt.Errorf("expected a prefix") 198 } 199 184 200 var channels string 185 201 if err := parseMessageParams(msg, &channels); err != nil { … … 202 218 ch.Members[msg.Prefix.Name] = 0 203 219 } 204 } 205 206 uc.user.forEachDownstream(func(dc *downstreamConn) { 207 dc.SendMessage(msg) 208 }) 220 221 uc.user.forEachDownstream(func(dc *downstreamConn) { 222 dc.SendMessage(&irc.Message{ 223 Prefix: dc.marshalUserPrefix(uc, msg.Prefix), 224 Command: "JOIN", 225 Params: []string{dc.marshalChannel(uc, ch)}, 226 }) 227 }) 228 } 209 229 case "PART": 230 if msg.Prefix == nil { 231 return fmt.Errorf("expected a prefix") 232 } 233 210 234 var channels string 211 235 if err := parseMessageParams(msg, &channels); err != nil { … … 224 248 delete(ch.Members, msg.Prefix.Name) 225 249 } 226 } 227 228 uc.user.forEachDownstream(func(dc *downstreamConn) { 229 dc.SendMessage(msg) 230 }) 250 251 uc.user.forEachDownstream(func(dc *downstreamConn) { 252 dc.SendMessage(&irc.Message{ 253 Prefix: dc.marshalUserPrefix(uc, msg.Prefix), 254 Command: "PART", 255 Params: []string{dc.marshalChannel(uc, ch)}, 256 }) 257 }) 258 } 231 259 case irc.RPL_TOPIC, irc.RPL_NOTOPIC: 232 260 var name, topic string … … 311 339 }) 312 340 case "PRIVMSG": 341 if err := parseMessageParams(msg, nil, nil); err != nil { 342 return err 343 } 313 344 uc.ring.Produce(msg) 314 345 case irc.RPL_YOURHOST, irc.RPL_CREATED: … … 332 363 uc.SendMessage(&irc.Message{ 333 364 Command: "NICK", 334 Params: []string{uc. upstream.Nick},365 Params: []string{uc.nick}, 335 366 }) 336 367 uc.SendMessage(&irc.Message{
Note:
See TracChangeset
for help on using the changeset viewer.