Changeset 24 in code for trunk


Ignore:
Timestamp:
Feb 6, 2020, 8:30:44 PM (5 years ago)
Author:
contact
Message:

Remove downstream conn from list on disconnect

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/server.go

    r23 r24  
    44        "fmt"
    55        "net"
     6        "sync"
    67
    78        "gopkg.in/irc.v3"
     
    4344        Upstreams []Upstream // TODO: per-user
    4445
     46        lock            sync.Mutex
    4547        downstreamConns []*downstreamConn
    4648}
     
    7577
    7678                conn := newDownstreamConn(s, netConn)
    77                 s.downstreamConns = append(s.downstreamConns, conn)
    7879                go func() {
     80                        s.lock.Lock()
     81                        s.downstreamConns = append(s.downstreamConns, conn)
     82                        s.lock.Unlock()
    7983                        if err := conn.readMessages(); err != nil {
    8084                                conn.logger.Printf("failed to handle messages: %v", err)
    8185                        }
     86                        s.lock.Lock()
     87                        for i, c := range s.downstreamConns {
     88                                if c == conn {
     89                                        s.downstreamConns = append(s.downstreamConns[:i], s.downstreamConns[i+1:]...)
     90                                        break
     91                                }
     92                        }
     93                        s.lock.Unlock()
    8294                }()
    8395        }
Note: See TracChangeset for help on using the changeset viewer.