Changeset 40 in code for trunk/downstream.go


Ignore:
Timestamp:
Feb 7, 2020, 10:56:36 AM (5 years ago)
Author:
contact
Message:

Add user.forEachDownstream

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/downstream.go

    r39 r40  
    116116                return fmt.Errorf("downstream connection already closed")
    117117        }
    118         if err := c.net.Close(); err != nil {
    119                 return err
    120         }
     118
     119        if u := c.user; u != nil {
     120                u.lock.Lock()
     121                for i := range u.downstreamConns {
     122                        if u.downstreamConns[i] == c {
     123                                u.downstreamConns = append(u.downstreamConns[:i], u.downstreamConns[i+1:]...)
     124                        }
     125                }
     126                u.lock.Unlock()
     127        }
     128
    121129        close(c.messages)
    122130        c.closed = true
    123         return nil
     131
     132        return c.net.Close()
    124133}
    125134
     
    182191        c.registered = true
    183192        c.user = u
     193
     194        u.lock.Lock()
     195        u.downstreamConns = append(u.downstreamConns, c)
     196        u.lock.Unlock()
    184197
    185198        c.messages <- &irc.Message{
Note: See TracChangeset for help on using the changeset viewer.