Changeset 460 in code for trunk/upstream.go


Ignore:
Timestamp:
Mar 15, 2021, 10:06:36 PM (4 years ago)
Author:
contact
Message:

Maintain state for upstream ISUPPORT

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/upstream.go

    r459 r460  
    8484        availableChannelTypes string
    8585        availableMemberships  []membership
     86        isupport              map[string]*string
    8687
    8788        registered    bool
     
    194195                availableChannelModes:    stdChannelModes,
    195196                availableMemberships:     stdMemberships,
     197                isupport:                 make(map[string]*string),
    196198                pendingLISTDownstreamSet: make(map[uint64]struct{}),
    197199        }
     
    614616                }
    615617                for _, token := range msg.Params[1 : len(msg.Params)-1] {
    616                         negate := false
    617618                        parameter := token
    618                         value := ""
     619                        var negate, hasValue bool
     620                        var value string
    619621                        if strings.HasPrefix(token, "-") {
    620622                                negate = true
     
    623625                                parameter = token[:i]
    624626                                value = token[i+1:]
    625                         }
    626                         if !negate {
     627                                hasValue = true
     628                        }
     629
     630                        if hasValue {
     631                                uc.isupport[parameter] = &value
     632                        } else if !negate {
     633                                uc.isupport[parameter] = nil
     634                        } else {
     635                                delete(uc.isupport, parameter)
     636                        }
     637
     638                        if !negate && hasValue {
     639                                // TODO: reset to defaults when the token is negated
    627640                                switch parameter {
    628641                                case "CHANMODES":
     
    639652                                        uc.networkName = value
    640653                                }
    641                         } else {
    642                                 // TODO: handle ISUPPORT negations
    643654                        }
    644655                }
Note: See TracChangeset for help on using the changeset viewer.