Changeset 127 in code for trunk/upstream.go
- Timestamp:
- Mar 19, 2020, 11:29:03 PM (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/upstream.go
r125 r127 558 558 forwardChannel(dc, ch) 559 559 }) 560 case irc.RPL_WHOREPLY: 561 var channel, username, host, server, nick, mode, trailing string 562 if err := parseMessageParams(msg, nil, &channel, &username, &host, &server, &nick, &mode, &trailing); err != nil { 563 return err 564 } 565 566 parts := strings.SplitN(trailing, " ", 2) 567 if len(parts) != 2 { 568 return fmt.Errorf("received malformed RPL_WHOREPLY: wrong trailing parameter: %s", trailing) 569 } 570 realname := parts[1] 571 hops, err := strconv.Atoi(parts[0]) 572 if err != nil { 573 return fmt.Errorf("received malformed RPL_WHOREPLY: wrong hop count: %s", parts[0]) 574 } 575 hops++ 576 577 trailing = strconv.Itoa(hops) + " " + realname 578 579 uc.forEachDownstream(func(dc *downstreamConn) { 580 channel := channel 581 if channel != "*" { 582 channel = dc.marshalChannel(uc, channel) 583 } 584 nick := dc.marshalNick(uc, nick) 585 dc.SendMessage(&irc.Message{ 586 Prefix: dc.srv.prefix(), 587 Command: irc.RPL_WHOREPLY, 588 Params: []string{dc.nick, channel, username, host, server, nick, mode, trailing}, 589 }) 590 }) 591 case irc.RPL_ENDOFWHO: 592 var name string 593 if err := parseMessageParams(msg, nil, &name); err != nil { 594 return err 595 } 596 597 uc.forEachDownstream(func(dc *downstreamConn) { 598 name := name 599 if name != "*" { 600 // TODO: support WHO masks 601 name = dc.marshalEntity(uc, name) 602 } 603 dc.SendMessage(&irc.Message{ 604 Prefix: dc.srv.prefix(), 605 Command: irc.RPL_ENDOFWHO, 606 Params: []string{dc.nick, name, "End of /WHO list."}, 607 }) 608 }) 560 609 case "PRIVMSG": 561 610 if msg.Prefix == nil {
Note:
See TracChangeset
for help on using the changeset viewer.