From be3281bdcf9d7903d68f721c6937ddf3f560d7f2 Mon Sep 17 00:00:00 2001 From: Shrenuj Bansal Date: Wed, 28 Jun 2023 13:35:21 -0400 Subject: [PATCH 1/2] Invert msg validation check to explicitly specify reject errors --- chain/messagepool/messagepool.go | 3 +++ chain/sub/incoming.go | 18 ++++++------------ 2 files changed, 9 insertions(+), 12 deletions(-) diff --git a/chain/messagepool/messagepool.go b/chain/messagepool/messagepool.go index 50f64f903ab..6dc3f223988 100644 --- a/chain/messagepool/messagepool.go +++ b/chain/messagepool/messagepool.go @@ -63,6 +63,9 @@ var MaxNonceGap = uint64(4) const MaxMessageSize = 64 << 10 // 64KiB +// NOTE: When adding a new error type, please make sure to add the new error type in +// func (mv *MessageValidator) Validate(ctx context.Context, pid peer.ID, msg *pubsub.Message) +// in /chain/sub/incoming.go var ( ErrMessageTooBig = errors.New("message too big") diff --git a/chain/sub/incoming.go b/chain/sub/incoming.go index a7c0bee57d9..677a1abec31 100644 --- a/chain/sub/incoming.go +++ b/chain/sub/incoming.go @@ -350,22 +350,16 @@ func (mv *MessageValidator) Validate(ctx context.Context, pid peer.ID, msg *pubs ) recordFailure(ctx, metrics.MessageValidationFailure, "add") switch { - case xerrors.Is(err, messagepool.ErrSoftValidationFailure): + case xerrors.Is(err, messagepool.ErrMessageTooBig): fallthrough - case xerrors.Is(err, messagepool.ErrRBFTooLowPremium): + case xerrors.Is(err, messagepool.ErrMessageValueTooHigh): fallthrough - case xerrors.Is(err, messagepool.ErrTooManyPendingMessages): + case xerrors.Is(err, messagepool.ErrNotEnoughFunds): fallthrough - case xerrors.Is(err, messagepool.ErrNonceGap): - fallthrough - case xerrors.Is(err, messagepool.ErrGasFeeCapTooLow): - fallthrough - case xerrors.Is(err, messagepool.ErrNonceTooLow): - fallthrough - case xerrors.Is(err, messagepool.ErrExistingNonce): - return pubsub.ValidationIgnore - default: + case xerrors.Is(err, messagepool.ErrInvalidToAddr): return pubsub.ValidationReject + default: + return pubsub.ValidationIgnore } } From bc5637c60a625e4439c50f9e6f5547b1d4b4d393 Mon Sep 17 00:00:00 2001 From: Shrenuj Bansal Date: Wed, 5 Jul 2023 12:13:01 -0400 Subject: [PATCH 2/2] keep default action as reject and make all error actions explicit --- chain/sub/incoming.go | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/chain/sub/incoming.go b/chain/sub/incoming.go index 677a1abec31..fc2b7baffcb 100644 --- a/chain/sub/incoming.go +++ b/chain/sub/incoming.go @@ -350,16 +350,32 @@ func (mv *MessageValidator) Validate(ctx context.Context, pid peer.ID, msg *pubs ) recordFailure(ctx, metrics.MessageValidationFailure, "add") switch { - case xerrors.Is(err, messagepool.ErrMessageTooBig): + + case xerrors.Is(err, messagepool.ErrSoftValidationFailure): fallthrough - case xerrors.Is(err, messagepool.ErrMessageValueTooHigh): + case xerrors.Is(err, messagepool.ErrRBFTooLowPremium): + fallthrough + case xerrors.Is(err, messagepool.ErrTooManyPendingMessages): + fallthrough + case xerrors.Is(err, messagepool.ErrNonceGap): + fallthrough + case xerrors.Is(err, messagepool.ErrGasFeeCapTooLow): + fallthrough + case xerrors.Is(err, messagepool.ErrNonceTooLow): fallthrough case xerrors.Is(err, messagepool.ErrNotEnoughFunds): fallthrough + case xerrors.Is(err, messagepool.ErrExistingNonce): + return pubsub.ValidationIgnore + + case xerrors.Is(err, messagepool.ErrMessageTooBig): + fallthrough + case xerrors.Is(err, messagepool.ErrMessageValueTooHigh): + fallthrough case xerrors.Is(err, messagepool.ErrInvalidToAddr): - return pubsub.ValidationReject + fallthrough default: - return pubsub.ValidationIgnore + return pubsub.ValidationReject } }