diff --git a/pallets/xcmp-queue/src/lib.rs b/pallets/xcmp-queue/src/lib.rs index e0c5b6e41e..1b416a7c69 100644 --- a/pallets/xcmp-queue/src/lib.rs +++ b/pallets/xcmp-queue/src/lib.rs @@ -655,7 +655,11 @@ impl Pallet { 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/pallets/xcmp-queue/src/tests.rs b/pallets/xcmp-queue/src/tests.rs index b6d8ef40b0..62e674004e 100644 --- a/pallets/xcmp-queue/src/tests.rs +++ b/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::(vec![]).encode(); + InboundXcmpMessages::::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(|| {