From 32b8565022d7d6ccb437769b5ed68121c5c34657 Mon Sep 17 00:00:00 2001 From: Taylor Gerring Date: Tue, 19 May 2015 14:46:32 -0500 Subject: [PATCH] Support multiple account unlock attempts --- cmd/geth/main.go | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/cmd/geth/main.go b/cmd/geth/main.go index 28a558d682..2afc92f10e 100644 --- a/cmd/geth/main.go +++ b/cmd/geth/main.go @@ -368,9 +368,16 @@ func unlockAccount(ctx *cli.Context, am *accounts.Manager, account string) (pass if len(account) == 0 { utils.Fatalf("Invalid account address '%s'", account) } - // Attempt to unlock the account - passphrase = getPassPhrase(ctx, "Unlocking account "+account, false) - err = am.Unlock(common.HexToAddress(account), passphrase) + // Attempt to unlock the account 3 times + attempts := 3 + for tries := 0; tries < attempts; tries++ { + msg := fmt.Sprintf("Unlocking account %s...%s | Attempt %d/%d", account[:8], account[len(account)-6:], tries+1, attempts) + passphrase = getPassPhrase(ctx, msg, false) + err = am.Unlock(common.HexToAddress(account), passphrase) + if err == nil { + break + } + } if err != nil { utils.Fatalf("Unlock account failed '%v'", err) }