From d9f394b2aea21b61c0adc096ad730cd20fcd4109 Mon Sep 17 00:00:00 2001 From: Sishir Giri Date: Mon, 14 Aug 2023 01:20:24 -0700 Subject: [PATCH] imp: use `types.MetadataFromVersion` helper function for callback handlers (#4290) --- modules/apps/29-fee/ibc_middleware.go | 12 +++++++----- modules/apps/29-fee/keeper/relay.go | 4 ++-- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/modules/apps/29-fee/ibc_middleware.go b/modules/apps/29-fee/ibc_middleware.go index 1390d816386..62d73a27f27 100644 --- a/modules/apps/29-fee/ibc_middleware.go +++ b/modules/apps/29-fee/ibc_middleware.go @@ -56,13 +56,15 @@ func (im IBCMiddleware) OnChanOpenInit( AppVersion: "", } } else { - if err := types.ModuleCdc.UnmarshalJSON([]byte(version), &versionMetadata); err != nil { + metadata, err := types.MetadataFromVersion(version) + if err != nil { // Since it is valid for fee version to not be specified, the above middleware version may be for a middleware // lower down in the stack. Thus, if it is not a fee version we pass the entire version string onto the underlying // application. return im.app.OnChanOpenInit(ctx, order, connectionHops, portID, channelID, chanCap, counterparty, version) } + versionMetadata = metadata } if versionMetadata.FeeVersion != types.Version { @@ -99,8 +101,8 @@ func (im IBCMiddleware) OnChanOpenTry( counterparty channeltypes.Counterparty, counterpartyVersion string, ) (string, error) { - var versionMetadata types.Metadata - if err := types.ModuleCdc.UnmarshalJSON([]byte(counterpartyVersion), &versionMetadata); err != nil { + versionMetadata, err := types.MetadataFromVersion(counterpartyVersion) + if err != nil { // Since it is valid for fee version to not be specified, the above middleware version may be for a middleware // lower down in the stack. Thus, if it is not a fee version we pass the entire version string onto the underlying // application. @@ -139,8 +141,8 @@ func (im IBCMiddleware) OnChanOpenAck( // If handshake was initialized with fee enabled it must complete with fee enabled. // If handshake was initialized with fee disabled it must complete with fee disabled. if im.keeper.IsFeeEnabled(ctx, portID, channelID) { - var versionMetadata types.Metadata - if err := types.ModuleCdc.UnmarshalJSON([]byte(counterpartyVersion), &versionMetadata); err != nil { + versionMetadata, err := types.MetadataFromVersion(counterpartyVersion) + if err != nil { return errorsmod.Wrapf(err, "failed to unmarshal ICS29 counterparty version metadata: %s", counterpartyVersion) } diff --git a/modules/apps/29-fee/keeper/relay.go b/modules/apps/29-fee/keeper/relay.go index a5328703d7c..c5d928b3483 100644 --- a/modules/apps/29-fee/keeper/relay.go +++ b/modules/apps/29-fee/keeper/relay.go @@ -66,8 +66,8 @@ func (k Keeper) GetAppVersion(ctx sdk.Context, portID, channelID string) (string return version, true } - var metadata types.Metadata - if err := types.ModuleCdc.UnmarshalJSON([]byte(version), &metadata); err != nil { + metadata, err := types.MetadataFromVersion(version) + if err != nil { panic(fmt.Errorf("unable to unmarshal metadata for fee enabled channel: %w", err)) }