]> www.vanbest.org Git - sasc-ng.git/commitdiff
viaccess: fix TPS to keep using last key
authorleslie <unknown>
Thu, 2 Oct 2008 11:02:37 +0000 (19:02 +0800)
committerleslie <unknown>
Thu, 2 Oct 2008 11:02:37 +0000 (19:02 +0800)
systems/viaccess/tps.c

index 2f4774716551df8fe40c8da37155645f9dc9139a..210cfd17d9fb138d5728ed1503d0c1cb25f08412 100644 (file)
@@ -611,7 +611,12 @@ const cTpsKey *cTpsKeys::GetKey(time_t t)
 {
   ListLock(false);
   cTpsKey *k;
-  for(k=First(); k; k=Next(k)) if(t<k->Timestamp()) break;
+  for(k=First(); k;) {
+    if(t<k->Timestamp()) break;
+    cTpsKey *n=Next(k);
+    if(!n) break; // if all keys are expired, use last one
+    k=n;
+    }
   ListUnlock();
   return k;
 }
@@ -672,7 +677,7 @@ void cTpsKeys::Purge(time_t now)
   ListLock(true);
   for(cTpsKey *k=First(); k;) {
     cTpsKey *n=Next(k);
-    if(k->Timestamp()<now-3600) { Del(k); del=true; }
+    if(k->Timestamp()<now-3600 && n) { Del(k); del=true; }
     k=n;
     }
   ListUnlock();