prevent potential hangup after ping timeout (fixes: #50)
Signed-off-by: Liam Stanley <me@liamstanley.io>
This commit is contained in:
parent
8487a7de15
commit
887ab30b90
5
conn.go
5
conn.go
@ -606,15 +606,16 @@ func (c *Client) pingLoop(ctx context.Context, errs chan error, wg *sync.WaitGro
|
|||||||
if time.Since(c.conn.lastPong) > c.Config.PingDelay+(60*time.Second) {
|
if time.Since(c.conn.lastPong) > c.Config.PingDelay+(60*time.Second) {
|
||||||
// It's 60 seconds over what out ping delay is, connection
|
// It's 60 seconds over what out ping delay is, connection
|
||||||
// has probably dropped.
|
// has probably dropped.
|
||||||
errs <- ErrTimedOut{
|
err := ErrTimedOut{
|
||||||
TimeSinceSuccess: time.Since(c.conn.lastPong),
|
TimeSinceSuccess: time.Since(c.conn.lastPong),
|
||||||
LastPong: c.conn.lastPong,
|
LastPong: c.conn.lastPong,
|
||||||
LastPing: c.conn.lastPing,
|
LastPing: c.conn.lastPing,
|
||||||
Delay: c.Config.PingDelay,
|
Delay: c.Config.PingDelay,
|
||||||
}
|
}
|
||||||
|
|
||||||
wg.Done()
|
|
||||||
c.conn.mu.RUnlock()
|
c.conn.mu.RUnlock()
|
||||||
|
errs <- err
|
||||||
|
wg.Done()
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
c.conn.mu.RUnlock()
|
c.conn.mu.RUnlock()
|
||||||
|
Loading…
Reference in New Issue
Block a user