difftreelog
fix handle bad origin in scheduler
in: master
1 file changed
pallets/scheduler/src/lib.rsdiffbeforeafterboth457 let scheduled_origin =457 let scheduled_origin =458 <<T as Config>::RuntimeOrigin as From<T::PalletsOrigin>>::from(s.origin.clone());458 <<T as Config>::RuntimeOrigin as From<T::PalletsOrigin>>::from(s.origin.clone());459 let ensured_origin =459 let ensured_origin =460 T::ScheduleOrigin::ensure_origin(scheduled_origin.into()).unwrap();460 T::ScheduleOrigin::ensure_origin(scheduled_origin.into());461461462 let r = match ensured_origin {462 let r = match ensured_origin {463 ScheduledEnsureOriginSuccess::Root => {463 Ok(ScheduledEnsureOriginSuccess::Root) => {464 Ok(call.dispatch_bypass_filter(frame_system::RawOrigin::Root.into()))464 Ok(call.dispatch_bypass_filter(frame_system::RawOrigin::Root.into()))465 }465 }466 ScheduledEnsureOriginSuccess::Signed(sender) => {466 Ok(ScheduledEnsureOriginSuccess::Signed(sender)) => {467 // Execute transaction via chain default pipeline467 // Execute transaction via chain default pipeline468 // That means dispatch will be processed like any user's extrinsic e.g. transaction fees will be taken468 // That means dispatch will be processed like any user's extrinsic e.g. transaction fees will be taken469 T::CallExecutor::dispatch_call(Some(sender), call.clone())469 T::CallExecutor::dispatch_call(Some(sender), call.clone())470 }470 }471 ScheduledEnsureOriginSuccess::Unsigned => {471 Ok(ScheduledEnsureOriginSuccess::Unsigned) => {472 // Unsigned version of the above472 // Unsigned version of the above473 T::CallExecutor::dispatch_call(None, call.clone())473 T::CallExecutor::dispatch_call(None, call.clone())474 }474 },475 Err(e) => Ok(Err(e.into())),475 };476 };476477477 let mut actual_call_weight: Weight = item_weight;478 let mut actual_call_weight: Weight = item_weight;