From 0299fd5d703d2a576125b414abbe172eaec9f65e Mon Sep 17 00:00:00 2001 From: Hendrik Hofstadt Date: Thu, 20 Jun 2019 20:34:45 +0200 Subject: [PATCH] Swap dead sessions --- manager.go | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/manager.go b/manager.go index 3bdca77..b7fdf4b 100644 --- a/manager.go +++ b/manager.go @@ -3,6 +3,7 @@ package yubihsm import ( "bytes" "errors" + "log" "sync" "time" @@ -69,6 +70,12 @@ func (s *SessionManager) pingRoutine() { if !bytes.Equal(parsedResp.Data, echoPayload) { err = errors.New("echoed data is invalid") } + } else { + // Session seems to be dead - reconnect and swap + err = s.swapSession() + if err != nil { + log.Printf("swapping dead session failed; err=%v", err) + } } s.keepAlive.Reset(pingInterval)