Changeset 129 in code for trunk/upstream.go


Ignore:
Timestamp:
Mar 20, 2020, 9:11:27 AM (5 years ago)
Author:
delthas
Message:

Fix MODE downstream support

  • Fix replies without client as first argument
  • Replace wrong prefix check with a proper entity type check
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/upstream.go

    r128 r129  
    135135}
    136136
     137func (uc *upstreamConn) isChannel(entity string) bool {
     138        for _, r := range entity {
     139                switch r {
     140                // TODO: support upstream ISUPPORT channel prefixes
     141                case '#', '&', '+', '!':
     142                        return true
     143                }
     144                break
     145        }
     146        return false
     147}
     148
    137149func (uc *upstreamConn) handleMessage(msg *irc.Message) error {
    138150        switch msg.Command {
     
    144156                return nil
    145157        case "MODE":
    146                 if msg.Prefix == nil {
    147                         return fmt.Errorf("missing prefix")
    148                 }
    149 
    150158                var name, modeStr string
    151159                if err := parseMessageParams(msg, &name, &modeStr); err != nil {
     
    153161                }
    154162
    155                 if name == msg.Prefix.Name { // user mode change
     163                if !uc.isChannel(name) { // user mode change
    156164                        if name != uc.nick {
    157                                 return fmt.Errorf("received MODE message for unknow nick %q", name)
     165                                return fmt.Errorf("received MODE message for unknown nick %q", name)
    158166                        }
    159167                        return uc.modes.Apply(modeStr)
    160168                } else { // channel mode change
     169                        // TODO: handle MODE channel mode arguments
    161170                        ch, err := uc.getChannel(name)
    162171                        if err != nil {
Note: See TracChangeset for help on using the changeset viewer.