]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
redid some renewal stuff
authoranwleung <anwleung@29311d96-e01e-0410-9327-a35deaab8ce9>
Fri, 30 Mar 2007 04:55:41 +0000 (04:55 +0000)
committeranwleung <anwleung@29311d96-e01e-0410-9327-a35deaab8ce9>
Fri, 30 Mar 2007 04:55:41 +0000 (04:55 +0000)
git-svn-id: https://ceph.svn.sf.net/svnroot/ceph@1324 29311d96-e01e-0410-9327-a35deaab8ce9

branches/aleung/security1/ceph/client/Client.cc
branches/aleung/security1/ceph/crypto/Renewal.h
branches/aleung/security1/ceph/mds/Server.cc

index f86d26d1786611013616792a1ba365acf2df9aa9..e37863ceb2b716b1b0ceb5f9122a7518aab7f2ee 100644 (file)
@@ -2762,7 +2762,8 @@ int Client::close(fh_t fh, __int64_t uid, __int64_t gid)
 
   // stop using capability
   //caps_in_use[uid].erase(in->get_ext_cap(uid)->get_id());
-  capcache->close_cap(uid, capcache->get_cache_cap(in->ino(), uid)->get_id());
+
+  //capcache->close_cap(uid, capcache->get_cache_cap(in->ino(), uid)->get_id());
 
   // hose fh
   fh_map.erase(fh);
index 7189c9390e4ca90eaeb6e7adb14d008872f7d855..351de9261854570cd953997cb635fddeabf3a4ab 100644 (file)
@@ -37,7 +37,15 @@ public:
   utime_t get_ts() { return t_s; }
   utime_t get_te() { return t_e; }
   set<cap_id_t>& get_renewed_caps() { return renewed_caps; }
+  int num_renewed_caps() { return renewed_caps.size(); }
   void add_cap(cap_id_t cid) { renewed_caps.insert(cid); }
+  void add_set(set<cap_id_t>& newcaps) {
+    for (set<cap_id_t>::iterator si = renewed_caps.begin();
+        si != renewed_caps.end();
+        si++) {
+      renewed_caps.insert(*si);;
+    }
+  }
 
   void sign_renewal(esignPriv privKey) {
     cap_id_t capids[renewed_caps.size()];
index b7b656f4e7244fec248c35dac37f0e29dbdd503d..80a451aa383caaa383a93496a133dd0a76a7733a 100644 (file)
@@ -300,15 +300,18 @@ void Server::handle_client_renewal(MClientRenewal *m)
       mds->recent_caps.insert(*si);
     }
   }
-  if (new_caps) {
+  if (new_caps || mds->token.num_renewed_caps() == 0) {
     // re-make extension
     mds->token = Renewal(mds->recent_caps);
+    //mds->token.add_set(mds->recent_caps);
+
     // re-sign
     mds->token.sign_renewal(mds->getPrvKey());
     cout << "Made a new token" << endl;
   }
-  else
+  else 
     cout << "Cached token was good" << endl;
+
   // if no new caps && cached extension, return cached extension
   // create extension for entire recent_cap set
   // cache the extension