From 8f1ef9d6e171a770622e4f2a9a4de3fa8366183d Mon Sep 17 00:00:00 2001 From: Vincent Geddes Date: Tue, 16 Mar 2021 19:23:22 +0200 Subject: [PATCH] Use correct HRMP path for parachain sibling (#366) --- pallets/xcm-handler/src/lib.rs | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) 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 */