From 7d0ee9a1dc6d7fcb5066dfc999a9c667b1df27bc Mon Sep 17 00:00:00 2001 From: Mikhail Klementev Date: Wed, 24 May 2023 18:47:46 +0000 Subject: [PATCH] fix: do not continue retrying when qemu is dead --- qemu/qemu-kernel.go | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/qemu/qemu-kernel.go b/qemu/qemu-kernel.go index a7dccd3..374644f 100644 --- a/qemu/qemu-kernel.go +++ b/qemu/qemu-kernel.go @@ -374,13 +374,17 @@ func (q *System) WaitForSSH(timeout time.Duration) error { return errors.New("no ssh (timeout)") } -func (q System) ssh(user string) (client *ssh.Client, err error) { +func (q *System) ssh(user string) (client *ssh.Client, err error) { cfg := &ssh.ClientConfig{ User: user, HostKeyCallback: ssh.InsecureIgnoreHostKey(), } for retries := q.SSH.Retries; retries > 0; retries-- { + if q.Died { + return + } + client, err = ssh.Dial("tcp", q.SSH.AddrPort, cfg) if err == nil { break @@ -512,8 +516,12 @@ func (q System) scp(user, localPath, remotePath string, recursive bool) (err err return } -func (q System) scpWithRetry(user, localPath, remotePath string, recursive bool) (err error) { +func (q *System) scpWithRetry(user, localPath, remotePath string, recursive bool) (err error) { for retries := q.SSH.Retries; retries > 0; retries-- { + if q.Died { + return + } + err = q.scp(user, localPath, remotePath, recursive) if err == nil { break