Changeset 45 in code for trunk


Ignore:
Timestamp:
Feb 7, 2020, 11:42:24 AM (5 years ago)
Author:
contact
Message:

Close connection from writer goroutine

Connections were being closed from the reader goroutine, causing issues
when sending messages and immediately closing the connection.

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/downstream.go

    r43 r45  
    7171                        }
    7272                }
     73                if err := conn.net.Close(); err != nil {
     74                        conn.logger.Printf("failed to close connection: %v", err)
     75                } else {
     76                        conn.logger.Printf("connection closed")
     77                }
    7378        }()
    7479
     
    8691func (c *downstreamConn) readMessages() error {
    8792        c.logger.Printf("new connection")
    88         defer c.Close()
    8993
    9094        for {
     
    109113        }
    110114
    111         return c.Close()
     115        return nil
    112116}
    113117
     
    130134        c.closed = true
    131135
    132         return c.net.Close()
     136        return nil
    133137}
    134138
  • trunk/upstream.go

    r44 r45  
    7272                        }
    7373                }
     74                if err := conn.net.Close(); err != nil {
     75                        conn.logger.Printf("failed to close connection: %v", err)
     76                } else {
     77                        conn.logger.Printf("connection closed")
     78                }
    7479        }()
    7580
     
    8085        if c.closed {
    8186                return fmt.Errorf("upstream connection already closed")
    82         }
    83         if err := c.net.Close(); err != nil {
    84                 return err
    8587        }
    8688        close(c.messages)
     
    331333
    332334func (c *upstreamConn) readMessages() error {
    333         defer c.Close()
    334 
    335335        for {
    336336                msg, err := c.irc.ReadMessage()
     
    346346        }
    347347
    348         return c.Close()
    349 }
     348        return nil
     349}
Note: See TracChangeset for help on using the changeset viewer.