Merge pull request #4653 from filecoin-project/4621-delete-wallet
Aftering importing a previously deleted key, be able to delete it again.
This commit is contained in:
commit
a54c6bfb05
@ -545,17 +545,31 @@ func (fsr *fsLockedRepo) Get(name string) (types.KeyInfo, error) {
|
|||||||
return res, nil
|
return res, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const KTrashPrefix = "trash-"
|
||||||
|
|
||||||
// Put saves key info under given name
|
// Put saves key info under given name
|
||||||
func (fsr *fsLockedRepo) Put(name string, info types.KeyInfo) error {
|
func (fsr *fsLockedRepo) Put(name string, info types.KeyInfo) error {
|
||||||
|
return fsr.put(name, info, 0)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (fsr *fsLockedRepo) put(rawName string, info types.KeyInfo, retries int) error {
|
||||||
if err := fsr.stillValid(); err != nil {
|
if err := fsr.stillValid(); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
name := rawName
|
||||||
|
if retries > 0 {
|
||||||
|
name = fmt.Sprintf("%s-%d", rawName, retries)
|
||||||
|
}
|
||||||
|
|
||||||
encName := base32.RawStdEncoding.EncodeToString([]byte(name))
|
encName := base32.RawStdEncoding.EncodeToString([]byte(name))
|
||||||
keyPath := fsr.join(fsKeystore, encName)
|
keyPath := fsr.join(fsKeystore, encName)
|
||||||
|
|
||||||
_, err := os.Stat(keyPath)
|
_, err := os.Stat(keyPath)
|
||||||
if err == nil {
|
if err == nil && strings.HasPrefix(name, KTrashPrefix) {
|
||||||
|
// retry writing the trash-prefixed file with a number suffix
|
||||||
|
return fsr.put(rawName, info, retries+1)
|
||||||
|
} else if err == nil {
|
||||||
return xerrors.Errorf("checking key before put '%s': %w", name, types.ErrKeyExists)
|
return xerrors.Errorf("checking key before put '%s': %w", name, types.ErrKeyExists)
|
||||||
} else if !os.IsNotExist(err) {
|
} else if !os.IsNotExist(err) {
|
||||||
return xerrors.Errorf("checking key before put '%s': %w", name, err)
|
return xerrors.Errorf("checking key before put '%s': %w", name, err)
|
||||||
|
Loading…
Reference in New Issue
Block a user