From 8fe6d84f2c0845f9a94e2edb7c9a84ba3818d776 Mon Sep 17 00:00:00 2001 From: Emmanuel T Odeke Date: Wed, 13 Dec 2023 10:25:57 -0800 Subject: [PATCH] refactor(baseapp): move handler retrieval per sdk.Msg into validateBasicTxMsgs (#18731) --- baseapp/baseapp.go | 25 ++++++++++--------------- 1 file changed, 10 insertions(+), 15 deletions(-) diff --git a/baseapp/baseapp.go b/baseapp/baseapp.go index 9afa9259d0..b03b0ce5c0 100644 --- a/baseapp/baseapp.go +++ b/baseapp/baseapp.go @@ -601,20 +601,22 @@ func (app *BaseApp) validateFinalizeBlockHeight(req *abci.RequestFinalizeBlock) return nil } -// validateBasicTxMsgs executes basic validator calls for messages. -func validateBasicTxMsgs(msgs []sdk.Msg) error { +// validateBasicTxMsgs executes basic validator calls for messages firstly by invoking +// .ValidateBasic if possible, then checking if the message has a known handler. +func validateBasicTxMsgs(router *MsgServiceRouter, msgs []sdk.Msg) error { if len(msgs) == 0 { return errorsmod.Wrap(sdkerrors.ErrInvalidRequest, "must contain at least one message") } for _, msg := range msgs { - m, ok := msg.(sdk.HasValidateBasic) - if !ok { - continue + if m, ok := msg.(sdk.HasValidateBasic); ok { + if err := m.ValidateBasic(); err != nil { + return err + } } - if err := m.ValidateBasic(); err != nil { - return err + if router != nil && router.Handler(msg) == nil { + return errorsmod.Wrapf(sdkerrors.ErrUnknownRequest, "no message handler found for %T", msg) } } @@ -862,17 +864,10 @@ func (app *BaseApp) runTx(mode execMode, txBytes []byte) (gInfo sdk.GasInfo, res } msgs := tx.GetMsgs() - if err := validateBasicTxMsgs(msgs); err != nil { + if err := validateBasicTxMsgs(app.msgServiceRouter, msgs); err != nil { return sdk.GasInfo{}, nil, nil, err } - for _, msg := range msgs { - handler := app.msgServiceRouter.Handler(msg) - if handler == nil { - return sdk.GasInfo{}, nil, nil, errorsmod.Wrapf(sdkerrors.ErrUnknownRequest, "no message handler found for %T", msg) - } - } - if app.anteHandler != nil { var ( anteCtx sdk.Context