diff --git a/cumulus/pallets/xcmp-queue/src/lib.rs b/cumulus/pallets/xcmp-queue/src/lib.rs index e0c5b6e41ea0e779fa6cf86adfca33401eaaf40c..1b416a7c69e579687cdfb3357291a45f503b829b 100644 --- a/cumulus/pallets/xcmp-queue/src/lib.rs +++ b/cumulus/pallets/xcmp-queue/src/lib.rs @@ -655,7 +655,11 @@ impl<T: Config> Pallet<T> { remaining_fragments = last_remaining_fragments; break }, - Err(_) => { + Err(error) => { + log::error!( + "Failed to process XCMP-XCM message, caused by {:?}", + error + ); // Message looks invalid; don't attempt to retry }, } diff --git a/cumulus/pallets/xcmp-queue/src/tests.rs b/cumulus/pallets/xcmp-queue/src/tests.rs index b6d8ef40b04d2bd7a91de8be10e38a5204fd0c35..62e674004eccdf20c31b0634a4fa674320a01734 100644 --- a/cumulus/pallets/xcmp-queue/src/tests.rs +++ b/cumulus/pallets/xcmp-queue/src/tests.rs @@ -65,6 +65,18 @@ fn handle_blob_message() { }); } +#[test] +#[should_panic = "Invalid incoming XCMP message data"] +#[cfg(debug_assertions)] +fn handle_invalid_data() { + new_test_ext().execute_with(|| { + let data = Xcm::<Test>(vec![]).encode(); + InboundXcmpMessages::<Test>::insert(ParaId::from(1000), 1, data); + let format = XcmpMessageFormat::ConcatenatedVersionedXcm; + XcmpQueue::process_xcmp_message(1000.into(), (1, format), 10_000_000_000, 10_000_000_000); + }); +} + #[test] fn service_overweight_unknown() { new_test_ext().execute_with(|| {