From 30aeaf968e51fa14e74579bbf9e57c6c79ded8d4 Mon Sep 17 00:00:00 2001 From: fatedier Date: Mon, 27 Mar 2017 17:25:25 +0800 Subject: [PATCH] fix heartbeat error --- client/control.go | 6 +++++- server/control.go | 1 + 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/client/control.go b/client/control.go index 0f31eeda..80dca9ad 100644 --- a/client/control.go +++ b/client/control.go @@ -218,7 +218,7 @@ func (ctl *Control) reader() { return } else { ctl.Warn("read error: %v", err) - continue + return } } else { ctl.readCh <- m @@ -262,10 +262,13 @@ func (ctl *Control) manager() { select { case <-hbSend.C: // send heartbeat to server + ctl.Debug("send heartbeat to server") ctl.sendCh <- &msg.Ping{} case <-hbCheck.C: if time.Since(ctl.lastPong) > time.Duration(config.ClientCommonCfg.HeartBeatTimeout)*time.Second { ctl.Warn("heartbeat timeout") + // let reader() stop + ctl.conn.Close() return } case rawMsg, ok := <-ctl.readCh: @@ -302,6 +305,7 @@ func (ctl *Control) manager() { ctl.Info("[%s] start proxy success", m.ProxyName) case *msg.Pong: ctl.lastPong = time.Now() + ctl.Debug("receive heartbeat from server") } } } diff --git a/server/control.go b/server/control.go index b2cf0abc..a0fe1861 100644 --- a/server/control.go +++ b/server/control.go @@ -318,6 +318,7 @@ func (ctl *Control) manager() { ctl.sendCh <- resp case *msg.Ping: ctl.lastPing = time.Now() + ctl.conn.Debug("receive heartbeat") ctl.sendCh <- &msg.Pong{} } }