From 19b76bf2e269c7a4e4ea724ecaa9afc419da01da Mon Sep 17 00:00:00 2001 From: Ryan O'Hara-Reid Date: Thu, 16 Dec 2021 09:43:50 +1100 Subject: [PATCH] engine/okgroup: fix panic when calling GetDepositAddress() (#858) * engine/okgroup: fix caller panic and patched for re-occurance * engine/helpers: remove nil check as it was not neccessary. --- engine/helpers.go | 5 +---- exchanges/okgroup/okgroup_wrapper.go | 13 ++++++++++--- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/engine/helpers.go b/engine/helpers.go index 39c35ba7..84f0c7a7 100644 --- a/engine/helpers.go +++ b/engine/helpers.go @@ -691,10 +691,7 @@ func (bot *Engine) GetCryptocurrencyDepositAddressesByExchange(exchName string) func (bot *Engine) GetExchangeCryptocurrencyDepositAddress(ctx context.Context, exchName, accountID, chain string, item currency.Code, bypassCache bool) (*deposit.Address, error) { if bot.DepositAddressManager != nil && bot.DepositAddressManager.IsSynced() && !bypassCache { resp, err := bot.DepositAddressManager.GetDepositAddressByExchangeAndCurrency(exchName, chain, item) - if err != nil { - return nil, err - } - return &resp, nil + return &resp, err } exch, err := bot.GetExchangeByName(exchName) if err != nil { diff --git a/exchanges/okgroup/okgroup_wrapper.go b/exchanges/okgroup/okgroup_wrapper.go index 59124a1b..2b83923f 100644 --- a/exchanges/okgroup/okgroup_wrapper.go +++ b/exchanges/okgroup/okgroup_wrapper.go @@ -29,6 +29,8 @@ import ( // Therefore this OKGroup_Wrapper can be shared between OKEX and OKCoin. // When circumstances change, wrapper funcs can be split appropriately +var errNoAccountDepositAddress = errors.New("no account deposit address") + // Setup sets user exchange configuration settings func (o *OKGroup) Setup(exch *config.Exchange) error { err := exch.Validate() @@ -428,11 +430,16 @@ func (o *OKGroup) GetOrderInfo(ctx context.Context, orderID string, pair currenc } // GetDepositAddress returns a deposit address for a specified currency -func (o *OKGroup) GetDepositAddress(ctx context.Context, p currency.Code, _, _ string) (*deposit.Address, error) { - wallet, err := o.GetAccountDepositAddressForCurrency(ctx, p.Lower().String()) - if err != nil || len(wallet) == 0 { +func (o *OKGroup) GetDepositAddress(ctx context.Context, c currency.Code, _, _ string) (*deposit.Address, error) { + wallet, err := o.GetAccountDepositAddressForCurrency(ctx, c.Lower().String()) + if err != nil { return nil, err } + if len(wallet) == 0 { + return nil, fmt.Errorf("%w for currency %s", + errNoAccountDepositAddress, + c) + } return &deposit.Address{ Address: wallet[0].Address, Tag: wallet[0].Tag,