diff --git a/pallets/xcm-handler/src/lib.rs b/pallets/xcm-handler/src/lib.rs index 03d50fa19a..a7d70ea396 100644 --- a/pallets/xcm-handler/src/lib.rs +++ b/pallets/xcm-handler/src/lib.rs @@ -184,17 +184,21 @@ impl SendXcm for Module { Ok(()) } // An HRMP message for a sibling parachain. - Some(Junction::Parachain { id }) => { - let data = msg.encode(); - let hash = T::Hashing::hash(&data); - let message = OutboundHrmpMessage { - recipient: (*id).into(), - data, - }; - T::HrmpMessageSender::send_hrmp_message(message) - .map_err(|_| XcmError::CannotReachDestination)?; - Self::deposit_event(RawEvent::HrmpMessageSent(hash)); - Ok(()) + Some(Junction::Parent) if dest.len() == 2 => { + if let Some(Junction::Parachain { id }) = dest.at(1) { + let data = msg.encode(); + let hash = T::Hashing::hash(&data); + let message = OutboundHrmpMessage { + recipient: (*id).into(), + data, + }; + T::HrmpMessageSender::send_hrmp_message(message) + .map_err(|_| XcmError::CannotReachDestination)?; + Self::deposit_event(RawEvent::HrmpMessageSent(hash)); + Ok(()) + } else { + Err(XcmError::UnhandledXcmMessage) + } } _ => { /* TODO: Handle other cases, like downward message */