refactor(baseapp): move handler retrieval per sdk.Msg into validateBasicTxMsgs (#18731)
This commit is contained in:
parent
14e261eb73
commit
8fe6d84f2c
@ -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
|
||||
|
||||
Loading…
Reference in New Issue
Block a user