Changeset 757 in code for trunk/downstream.go


Ignore:
Timestamp:
Dec 8, 2021, 5:03:40 PM (4 years ago)
Author:
contact
Message:

Add context to {conn,upstreamConn}.SendMessage

This avoids blocking on upstream message rate limiting for too
long.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/downstream.go

    r754 r757  
    552552
    553553        dc.srv.metrics.downstreamOutMessagesTotal.Inc()
    554         dc.conn.SendMessage(msg)
     554        dc.conn.SendMessage(context.TODO(), msg)
    555555}
    556556
     
    16671667                                return
    16681668                        }
    1669                         uc.SendMessageLabeled(dc.id, &irc.Message{
     1669                        uc.SendMessageLabeled(ctx, dc.id, &irc.Message{
    16701670                                Command: "NICK",
    16711671                                Params:  []string{nick},
     
    17011701                        // support setname
    17021702                        if uc := n.conn; uc != nil && uc.caps["setname"] {
    1703                                 uc.SendMessageLabeled(dc.id, &irc.Message{
     1703                                uc.SendMessageLabeled(ctx, dc.id, &irc.Message{
    17041704                                        Command: "SETNAME",
    17051705                                        Params:  []string{realname},
     
    17761776                                params = append(params, key)
    17771777                        }
    1778                         uc.SendMessageLabeled(dc.id, &irc.Message{
     1778                        uc.SendMessageLabeled(ctx, dc.id, &irc.Message{
    17791779                                Command: "JOIN",
    17801780                                Params:  params,
     
    18361836                                        params = append(params, reason)
    18371837                                }
    1838                                 uc.SendMessageLabeled(dc.id, &irc.Message{
     1838                                uc.SendMessageLabeled(ctx, dc.id, &irc.Message{
    18391839                                        Command: "PART",
    18401840                                        Params:  params,
     
    18971897                                params = append(params, reason)
    18981898                        }
    1899                         uc.SendMessageLabeled(dc.id, &irc.Message{
     1899                        uc.SendMessageLabeled(ctx, dc.id, &irc.Message{
    19001900                                Command: "KICK",
    19011901                                Params:  params,
     
    19161916                        if modeStr != "" {
    19171917                                if uc := dc.upstream(); uc != nil {
    1918                                         uc.SendMessageLabeled(dc.id, &irc.Message{
     1918                                        uc.SendMessageLabeled(ctx, dc.id, &irc.Message{
    19191919                                                Command: "MODE",
    19201920                                                Params:  []string{uc.nick, modeStr},
     
    19571957                        params := []string{upstreamName, modeStr}
    19581958                        params = append(params, msg.Params[2:]...)
    1959                         uc.SendMessageLabeled(dc.id, &irc.Message{
     1959                        uc.SendMessageLabeled(ctx, dc.id, &irc.Message{
    19601960                                Command: "MODE",
    19611961                                Params:  params,
     
    20062006                if len(msg.Params) > 1 { // setting topic
    20072007                        topic := msg.Params[1]
    2008                         uc.SendMessageLabeled(dc.id, &irc.Message{
     2008                        uc.SendMessageLabeled(ctx, dc.id, &irc.Message{
    20092009                                Command: "TOPIC",
    20102010                                Params:  []string{upstreamName, topic},
     
    20712071                        } else {
    20722072                                // NAMES on a channel we have not joined, ask upstream
    2073                                 uc.SendMessageLabeled(dc.id, &irc.Message{
     2073                                uc.SendMessageLabeled(ctx, dc.id, &irc.Message{
    20742074                                        Command: "NAMES",
    20752075                                        Params:  []string{upstreamName},
     
    22712271                }
    22722272
    2273                 uc.SendMessageLabeled(dc.id, &irc.Message{
     2273                uc.SendMessageLabeled(ctx, dc.id, &irc.Message{
    22742274                        Command: "WHOIS",
    22752275                        Params:  params,
     
    23482348                                unmarshaledText = dc.unmarshalText(uc, text)
    23492349                        }
    2350                         uc.SendMessageLabeled(dc.id, &irc.Message{
     2350                        uc.SendMessageLabeled(ctx, dc.id, &irc.Message{
    23512351                                Tags:    tags,
    23522352                                Command: msg.Command,
     
    23992399                        }
    24002400
    2401                         uc.SendMessageLabeled(dc.id, &irc.Message{
     2401                        uc.SendMessageLabeled(ctx, dc.id, &irc.Message{
    24022402                                Tags:    tags,
    24032403                                Command: "TAGMSG",
     
    24312431                uc := ucChannel
    24322432
    2433                 uc.SendMessageLabeled(dc.id, &irc.Message{
     2433                uc.SendMessageLabeled(ctx, dc.id, &irc.Message{
    24342434                        Command: "INVITE",
    24352435                        Params:  []string{upstreamUser, upstreamChannel},
     
    28512851                }
    28522852
    2853                 uc.SendMessageLabeled(dc.id, msg)
     2853                uc.SendMessageLabeled(ctx, dc.id, msg)
    28542854        }
    28552855        return nil
Note: See TracChangeset for help on using the changeset viewer.