Changeset 67 in code for trunk


Ignore:
Timestamp:
Feb 18, 2020, 4:26:17 PM (5 years ago)
Author:
contact
Message:

Enable TCP keep-alive on all connections

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/server.go

    r65 r67  
    66        "net"
    77        "sync"
     8        "time"
    89
    910        "gopkg.in/irc.v3"
    1011)
     12
     13// TODO: make configurable
     14var keepAlivePeriod = time.Minute
     15
     16func setKeepAlive(c net.Conn) error {
     17        tcpConn, ok := c.(*net.TCPConn)
     18        if !ok {
     19                return fmt.Errorf("cannot enable keep-alive on a non-TCP connection")
     20        }
     21        if err := tcpConn.SetKeepAlive(true); err != nil {
     22                return err
     23        }
     24        return tcpConn.SetKeepAlivePeriod(keepAlivePeriod)
     25}
    1126
    1227type Logger interface {
     
    178193                }
    179194
     195                setKeepAlive(netConn)
     196
    180197                dc := newDownstreamConn(s, netConn)
    181198                go func() {
  • trunk/upstream.go

    r66 r67  
    5656                return nil, fmt.Errorf("failed to dial %q: %v", upstream.Addr, err)
    5757        }
     58
     59        setKeepAlive(netConn)
    5860
    5961        msgs := make(chan *irc.Message, 64)
Note: See TracChangeset for help on using the changeset viewer.