Skip to content
  • Oliver Tale-Yazdi's avatar
    [FRAME] Make MQ pallet re-entrancy safe (#2356) · 7e7fe990
    Oliver Tale-Yazdi authored
    
    
    Closes https://github.com/paritytech/polkadot-sdk/issues/2319
    
    Changes:
    - Ensure that only `enqueue_message(s)` is callable from within the
    message processor. This prevents messed up storage that can currently
    happen when the pallet is called into recursively.
    - Use `H256` instead of `[u8; 32]` for clearer API.
    
    ## Details
    
    The re-entracy check is done with the `environmental` crate by adding a
    `with_service_mutex(f)` function that runs the closure exclusively. This
    works since the MQ pallet is not instantiable.
    
    ---------
    
    Signed-off-by: default avatarOliver Tale-Yazdi <[email protected]>
    Co-authored-by: default avatarFrancisco Aguirre <[email protected]>
    7e7fe990