diff --git a/bin/runtime-common/src/messages.rs b/bin/runtime-common/src/messages.rs index 97a460716c90..e6c7deb98a2c 100644 --- a/bin/runtime-common/src/messages.rs +++ b/bin/runtime-common/src/messages.rs @@ -216,7 +216,7 @@ pub mod source { // the message itself. The proof is always larger than the message. But unless chain state // is enormously large, it should be several dozens/hundreds of bytes. The delivery // transaction also contains signatures and signed extensions. Because of this, we reserve - // 1/3 of the the maximal extrinsic weight for this data. + // 1/3 of the the maximal extrinsic size for this data. if payload.len() > maximal_message_size::() as usize { return Err(VerificationError::MessageTooLarge) } diff --git a/bin/runtime-common/src/messages_call_ext.rs b/bin/runtime-common/src/messages_call_ext.rs index 3f48ce583f9c..8b4a50a0f30f 100644 --- a/bin/runtime-common/src/messages_call_ext.rs +++ b/bin/runtime-common/src/messages_call_ext.rs @@ -47,7 +47,7 @@ pub struct BaseMessagesProofInfo { impl BaseMessagesProofInfo { /// Returns true if `bundled_range` continues the `0..=best_stored_nonce` range. fn appends_to_stored_nonce(&self) -> bool { - *self.bundled_range.start() == self.best_stored_nonce + 1 + Some(*self.bundled_range.start()) == self.best_stored_nonce.checked_add(1) } } diff --git a/modules/messages/src/inbound_lane.rs b/modules/messages/src/inbound_lane.rs index 2912c89cd1be..b665b5516fc4 100644 --- a/modules/messages/src/inbound_lane.rs +++ b/modules/messages/src/inbound_lane.rs @@ -171,8 +171,7 @@ impl InboundLane { message_data: DispatchMessageData, ) -> ReceivalResult { let mut data = self.storage.get_or_init_data(); - let is_correct_message = nonce == data.last_delivered_nonce() + 1; - if !is_correct_message { + if Some(nonce) != data.last_delivered_nonce().checked_add(1) { return ReceivalResult::InvalidNonce }