Changeset 217 in code for trunk/upstream.go


Ignore:
Timestamp:
Apr 3, 2020, 7:00:19 PM (5 years ago)
Author:
contact
Message:

Add NOTICE messages to ring buffer

References: https://todo.sr.ht/~emersion/soju/33

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/upstream.go

    r216 r217  
    258258                return nil
    259259        case "NOTICE":
    260                 uc.logger.Print(msg)
    261 
    262260                if msg.Prefix.User == "" && msg.Prefix.Host == "" { // server message
    263                         uc.forEachDownstream(func(dc *downstreamConn) {
    264                                 dc.SendMessage(&irc.Message{
    265                                         Command: "NOTICE",
    266                                         Params:  msg.Params,
    267                                 })
    268                         })
     261                        uc.network.ring.Produce(msg)
    269262                } else { // regular user NOTICE
    270                         var nick, text string
    271                         if err := parseMessageParams(msg, &nick, &text); err != nil {
     263                        var entity, text string
     264                        if err := parseMessageParams(msg, &entity, &text); err != nil {
    272265                                return err
    273266                        }
    274267
    275                         target := nick
    276                         if nick == uc.nick {
     268                        target := entity
     269                        if target == uc.nick {
    277270                                target = msg.Prefix.Name
    278271                        }
    279272                        uc.appendLog(target, msg)
    280273
    281                         uc.forEachDownstream(func(dc *downstreamConn) {
    282                                 dc.SendMessage(&irc.Message{
    283                                         Prefix:  dc.marshalUserPrefix(uc, msg.Prefix),
    284                                         Command: "NOTICE",
    285                                         Params:  []string{dc.marshalEntity(uc, nick), text},
    286                                 })
    287                         })
     274                        uc.network.ring.Produce(msg)
    288275                }
    289276        case "CAP":
     
    11401127                }
    11411128
    1142                 var nick, text string
    1143                 if err := parseMessageParams(msg, &nick, &text); err != nil {
     1129                var entity, text string
     1130                if err := parseMessageParams(msg, &entity, &text); err != nil {
    11441131                        return err
    11451132                }
     
    11491136                        break
    11501137                }
    1151                 if nick == serviceNick {
     1138                if entity == serviceNick {
    11521139                        uc.logger.Printf("skipping PRIVMSG to soju's service: %v", msg)
    11531140                        break
    11541141                }
    11551142
    1156                 target := nick
    1157                 if nick == uc.nick {
     1143                target := entity
     1144                if target == uc.nick {
    11581145                        target = msg.Prefix.Name
    11591146                }
Note: See TracChangeset for help on using the changeset viewer.