Changeset 65 in code for trunk


Ignore:
Timestamp:
Feb 18, 2020, 3:54:06 PM (5 years ago)
Author:
contact
Message:

Don't leave connections half-opened

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/server.go

    r64 r65  
    135135                // TODO: retry connecting
    136136                go func() {
    137                         conn, err := connectToUpstream(u, upstream)
     137                        uc, err := connectToUpstream(u, upstream)
    138138                        if err != nil {
    139139                                s.Logger.Printf("failed to connect to upstream server %q: %v", upstream.Addr, err)
     
    141141                        }
    142142
    143                         conn.register()
     143                        uc.register()
    144144
    145145                        u.lock.Lock()
    146                         u.upstreamConns = append(u.upstreamConns, conn)
     146                        u.upstreamConns = append(u.upstreamConns, uc)
    147147                        u.lock.Unlock()
    148148
    149                         if err := conn.readMessages(); err != nil {
    150                                 conn.logger.Printf("failed to handle messages: %v", err)
    151                         }
     149                        if err := uc.readMessages(); err != nil {
     150                                uc.logger.Printf("failed to handle messages: %v", err)
     151                        }
     152                        uc.Close()
    152153
    153154                        u.lock.Lock()
    154                         for i, c := range u.upstreamConns {
    155                                 if c == conn {
     155                        for i := range u.upstreamConns {
     156                                if u.upstreamConns[i] == uc {
    156157                                        u.upstreamConns = append(u.upstreamConns[:i], u.upstreamConns[i+1:]...)
    157158                                        break
     
    177178                }
    178179
    179                 conn := newDownstreamConn(s, netConn)
     180                dc := newDownstreamConn(s, netConn)
    180181                go func() {
    181182                        s.lock.Lock()
    182                         s.downstreamConns = append(s.downstreamConns, conn)
     183                        s.downstreamConns = append(s.downstreamConns, dc)
    183184                        s.lock.Unlock()
    184185
    185                         if err := conn.readMessages(); err != nil {
    186                                 conn.logger.Printf("failed to handle messages: %v", err)
    187                         }
     186                        if err := dc.readMessages(); err != nil {
     187                                dc.logger.Printf("failed to handle messages: %v", err)
     188                        }
     189                        dc.Close()
    188190
    189191                        s.lock.Lock()
    190                         for i, c := range s.downstreamConns {
    191                                 if c == conn {
     192                        for i := range s.downstreamConns {
     193                                if s.downstreamConns[i] == dc {
    192194                                        s.downstreamConns = append(s.downstreamConns[:i], s.downstreamConns[i+1:]...)
    193195                                        break
Note: See TracChangeset for help on using the changeset viewer.