Changeset 29 in code


Ignore:
Timestamp:
Feb 6, 2020, 9:25:32 PM (5 years ago)
Author:
contact
Message:

Keep track of upstream connections in a list

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/server.go

    r24 r29  
    4646        lock            sync.Mutex
    4747        downstreamConns []*downstreamConn
     48        upstreamConns   []*upstreamConn
    4849}
    4950
     
    6263                                return
    6364                        }
     65
     66                        s.lock.Lock()
     67                        s.upstreamConns = append(s.upstreamConns, conn)
     68                        s.lock.Unlock()
     69
    6470                        if err := conn.readMessages(); err != nil {
    6571                                conn.logger.Printf("failed to handle messages: %v", err)
    6672                        }
     73
     74                        s.lock.Lock()
     75                        for i, c := range s.upstreamConns {
     76                                if c == conn {
     77                                        s.upstreamConns = append(s.upstreamConns[:i], s.upstreamConns[i+1:]...)
     78                                        break
     79                                }
     80                        }
     81                        s.lock.Unlock()
    6782                }()
    6883        }
     
    8196                        s.downstreamConns = append(s.downstreamConns, conn)
    8297                        s.lock.Unlock()
     98
    8399                        if err := conn.readMessages(); err != nil {
    84100                                conn.logger.Printf("failed to handle messages: %v", err)
    85101                        }
     102
    86103                        s.lock.Lock()
    87104                        for i, c := range s.downstreamConns {
Note: See TracChangeset for help on using the changeset viewer.