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)