Changeset 156 in code for trunk/upstream.go


Ignore:
Timestamp:
Mar 25, 2020, 10:21:14 PM (5 years ago)
Author:
delthas
Message:

Route NAMES, WHO, WHOIS replies to the requesting downstream

Using labeled-response, the replies to several commands such as NAMES,
WHO, WHOIS can be routed back to a specific downstream, rather than
being broadcast to all downstreams.

For example, after this commit, if the server supports labeled-response,
if a downstream requests the NAMES or WHO or WHOIS of a channel, the
replies of the upstream will only be sent back to that downstream, and
the other downstreams won't receive these messages.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/upstream.go

    r155 r156  
    751751                if !ok {
    752752                        // NAMES on a channel we have not joined, forward to downstream
    753                         uc.forEachDownstream(func(dc *downstreamConn) {
     753                        uc.forEachDownstreamById(downstreamId, func(dc *downstreamConn) {
    754754                                channel := dc.marshalChannel(uc, name)
    755755                                members := strings.Split(members, " ")
     
    788788                if !ok {
    789789                        // NAMES on a channel we have not joined, forward to downstream
    790                         uc.forEachDownstream(func(dc *downstreamConn) {
     790                        uc.forEachDownstreamById(downstreamId, func(dc *downstreamConn) {
    791791                                channel := dc.marshalChannel(uc, name)
    792792
     
    827827                trailing = strconv.Itoa(hops) + " " + realname
    828828
    829                 uc.forEachDownstream(func(dc *downstreamConn) {
     829                uc.forEachDownstreamById(downstreamId, func(dc *downstreamConn) {
    830830                        channel := channel
    831831                        if channel != "*" {
     
    845845                }
    846846
    847                 uc.forEachDownstream(func(dc *downstreamConn) {
     847                uc.forEachDownstreamById(downstreamId, func(dc *downstreamConn) {
    848848                        name := name
    849849                        if name != "*" {
     
    863863                }
    864864
    865                 uc.forEachDownstream(func(dc *downstreamConn) {
     865                uc.forEachDownstreamById(downstreamId, func(dc *downstreamConn) {
    866866                        nick := dc.marshalNick(uc, nick)
    867867                        dc.SendMessage(&irc.Message{
     
    877877                }
    878878
    879                 uc.forEachDownstream(func(dc *downstreamConn) {
     879                uc.forEachDownstreamById(downstreamId, func(dc *downstreamConn) {
    880880                        nick := dc.marshalNick(uc, nick)
    881881                        dc.SendMessage(&irc.Message{
     
    891891                }
    892892
    893                 uc.forEachDownstream(func(dc *downstreamConn) {
     893                uc.forEachDownstreamById(downstreamId, func(dc *downstreamConn) {
    894894                        nick := dc.marshalNick(uc, nick)
    895895                        dc.SendMessage(&irc.Message{
     
    905905                }
    906906
    907                 uc.forEachDownstream(func(dc *downstreamConn) {
     907                uc.forEachDownstreamById(downstreamId, func(dc *downstreamConn) {
    908908                        nick := dc.marshalNick(uc, nick)
    909909                        params := []string{dc.nick, nick}
     
    922922                channels := strings.Split(channelList, " ")
    923923
    924                 uc.forEachDownstream(func(dc *downstreamConn) {
     924                uc.forEachDownstreamById(downstreamId, func(dc *downstreamConn) {
    925925                        nick := dc.marshalNick(uc, nick)
    926926                        channelList := make([]string, len(channels))
     
    943943                }
    944944
    945                 uc.forEachDownstream(func(dc *downstreamConn) {
     945                uc.forEachDownstreamById(downstreamId, func(dc *downstreamConn) {
    946946                        nick := dc.marshalNick(uc, nick)
    947947                        dc.SendMessage(&irc.Message{
Note: See TracChangeset for help on using the changeset viewer.