chiark / gitweb /
wip errors from introducing accounts
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 1 Nov 2020 22:32:37 +0000 (22:32 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 1 Nov 2020 22:32:37 +0000 (22:32 +0000)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
src/accounts.rs
src/global.rs

index 62454baca5271033ea70aecd0483161dc70534f7..9c9c7370d201e7ac69c3ed930731e88bcdb2020b 100644 (file)
@@ -273,8 +273,10 @@ impl AccountsGuard {
     let (entry, acctid) = self.lookup_mut_caller_must_save(key, auth)?;
 
     if let Some(new_access) = set_access {
-      process_all_players_for_account(acctid,
-                                      InstanceGuard::invalidate_tokens)?;
+      process_all_players_for_account(
+        acctid,
+        |ig, player| ig.invalidate_tokens(player)
+      )?;
       entry.access = AccessRecord(new_access);
     }      
     let output = f(&mut *entry, acctid);
index 10c34a85435007d30d7ec2a125d237c5e2462892..28b22f4c7559f745a3d71895be00ddff650c0803 100644 (file)
@@ -1108,11 +1108,10 @@ pub fn record_token<Id : AccessId> (
 
 #[throws(E)]
 pub fn process_all_players_for_account<
-    'i, 'j : 'i,
     E: Error,
-    F: FnMut(&'i mut InstanceGuard<'j>, PlayerId) -> Result<(),E>
+    F: FnMut(&mut InstanceGuard<'_>, PlayerId) -> Result<(),E>
     >
-  (acctid: AccountId, f: F)
+  (acctid: AccountId, mut f: F)
 {
   let games = GLOBAL.games.write().unwrap();
   for gref in games.values() {
@@ -1120,8 +1119,8 @@ pub fn process_all_players_for_account<
     let remove : Vec<_> = c.g.iplayers.iter().filter_map(|(player,pr)| {
       if pr.ipl.acctid == acctid { Some(player) } else { None }
     }).collect();
-    let ig = InstanceGuard { gref: gref.clone(), c };
-    for player in remove.drain(..) {
+    let mut ig = InstanceGuard { gref: gref.clone(), c };
+    for player in remove.into_iter() {
       f(&mut ig, player)?;
     }
   }