diff options
Diffstat (limited to 'core/connection.go')
-rw-r--r-- | core/connection.go | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/core/connection.go b/core/connection.go index 1bfcae5..f796f3d 100644 --- a/core/connection.go +++ b/core/connection.go @@ -216,14 +216,18 @@ func (c *Connection) Disconnect() { return } if c.vppClient != nil { - c.disconnectVPP() + c.disconnectVPP(true) } } -// disconnectVPP disconnects from VPP in case it is connected. -func (c *Connection) disconnectVPP() { +// disconnectVPP disconnects from VPP in case it is connected. terminate tells +// that disconnectVPP() was called from Close(), so healthCheckLoop() can be +// terminated. +func (c *Connection) disconnectVPP(terminate bool) { if atomic.CompareAndSwapUint32(&c.vppConnected, 1, 0) { - close(c.healthCheckDone) + if terminate { + close(c.healthCheckDone) + } log.Debug("Disconnecting from VPP..") if err := c.vppClient.Disconnect(); err != nil { @@ -383,7 +387,7 @@ HealthCheck: } // cleanup - c.disconnectVPP() + c.disconnectVPP(false) // we are now disconnected, start connect loop c.connectLoop() |