chiark / gitweb /
cmdlistener: Use access_bundles in two more places
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 15 May 2021 17:45:24 +0000 (18:45 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sat, 15 May 2021 17:56:43 +0000 (18:56 +0100)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
daemon/cmdlistener.rs

index 13a2006d7d6df7ea07d6de6518495f8eb7be5fbd..92d885816d458ce52af60bb81dd1b0ba68c18521 100644 (file)
@@ -274,20 +274,23 @@ fn execute_and_respond<R,W>(cs: &mut CommandStreamData, cmd: MgmtCommand,
     }
     MC::ListBundles { game } => {
       let (ag, gref) = start_access_game(&game)?;
-      let mut igu = gref.lock()?;
-      let (ig, _) = cs.check_acl(&ag, &mut igu, PCH::Instance,
-                                 TP_ACCESS_BUNDLES)?;
-      let bundles = ig.bundle_list.clone();
+      let (bundles,_auth) =
+        access_bundles(
+          cs,&ag,&gref,TP_ACCESS_BUNDLES,
+          &mut |ig,_|{
+            Ok(ig.bundle_list.clone())
+          })?;
       MR::Bundles { bundles }
     }
     MC::DownloadBundle { game, id } => {
-      let ag = AccountsGuard::lock();
-      let gref = Instance::lookup_by_name_unauth(&game)?;
-      let mut igu = gref.lock()?;
-      let (ig, _) = cs.check_acl(&ag, &mut igu, PCH::Instance,
-                                     TP_ACCESS_BUNDLES)?;
-      let f = id.open(&ig)?.ok_or_else(|| ME::BundleNotFound)?;
-      bulk_download = Some(Box::new(f));
+      let (ag, gref) = start_access_game(&game)?;
+      access_bundles(
+        cs,&ag,&gref,TP_ACCESS_BUNDLES,
+        &mut |ig,_|{
+          let f = id.open(&ig)?.ok_or_else(|| ME::BundleNotFound)?;
+          bulk_download = Some(Box::new(f));
+          Ok(())
+        })?;
       Fine
     }
     MC::ClearBundles { game } => {