Changeset 296 in code


Ignore:
Timestamp:
May 27, 2020, 9:42:38 PM (5 years ago)
Author:
delthas
Message:

Update downstream nicks in single-server mode and after NICK

Previously, the downstream nick was never changed, even when the
downstream sent a NICK message or was in single-server mode with a
different nick.

This adds support for updating the downstream nick in the following
cases:

  • when a downstream sends NICK
  • additionally, in single-server mode:
    • when a downstream connects and its single network is connected
    • when an upstream connects
    • when an upstream sends NICK
Location:
trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/downstream.go

    r293 r296  
    618618                        dc.unsetSupportedCap(cap)
    619619                }
     620        }
     621}
     622
     623func (dc *downstreamConn) updateNick() {
     624        if uc := dc.upstream(); uc != nil && uc.nick != dc.nick {
     625                dc.SendMessage(&irc.Message{
     626                        Prefix:  dc.prefix(),
     627                        Command: "NICK",
     628                        Params:  []string{uc.nick},
     629                })
     630                dc.nick = uc.nick
    620631        }
    621632}
     
    778789        })
    779790
     791        dc.updateNick()
     792
    780793        dc.forEachUpstream(func(uc *upstreamConn) {
    781794                for _, ch := range uc.channels {
     
    936949                        uc.SendMessage(msg)
    937950                })
     951
     952                if dc.upstream() == nil && dc.nick != nick {
     953                        dc.SendMessage(&irc.Message{
     954                                Prefix:  dc.prefix(),
     955                                Command: "NICK",
     956                                Params:  []string{nick},
     957                        })
     958                        dc.nick = nick
     959                }
    938960        case "JOIN":
    939961                var namesStr string
  • trunk/upstream.go

    r295 r296  
    657657                                dc.SendMessage(dc.marshalMessage(msg, uc.network))
    658658                        })
     659                } else {
     660                        uc.forEachDownstream(func(dc *downstreamConn) {
     661                                dc.updateNick()
     662                        })
    659663                }
    660664        case "JOIN":
  • trunk/user.go

    r284 r296  
    299299                                dc.updateSupportedCaps()
    300300                                sendServiceNOTICE(dc, fmt.Sprintf("connected to %s", uc.network.GetName()))
     301
     302                                dc.updateNick()
    301303                        })
    302304                        uc.network.lastError = nil
Note: See TracChangeset for help on using the changeset viewer.