ソースを参照

htable: more checks of updateexpire when item is updated

Daniel-Constantin Mierla 10 年 前
コミット
dd0fd7011b
1 ファイル変更10 行追加3 行削除
  1. 10 3
      modules/htable/ht_api.c

+ 10 - 3
modules/htable/ht_api.c

@@ -460,7 +460,10 @@ int ht_set_cell(ht_t *ht, str *name, int type, int_str *val, int mode)
 						}
 						cell->next = it->next;
 						cell->prev = it->prev;
-						cell->expire = now + ht->htexpire;
+						if(ht->updateexpire)
+							cell->expire = now + ht->htexpire;
+						else
+							cell->expire = it->expire;
 						if(it->prev)
 							it->prev->next = cell;
 						else
@@ -489,7 +492,10 @@ int ht_set_cell(ht_t *ht, str *name, int type, int_str *val, int mode)
 						if(mode) ht_slot_unlock(ht, idx);
 						return -1;
 					}
-					cell->expire = now + ht->htexpire;
+					if(ht->updateexpire)
+						cell->expire = now + ht->htexpire;
+					else
+						cell->expire = it->expire;
 					cell->next = it->next;
 					cell->prev = it->prev;
 					if(it->prev)
@@ -649,7 +655,8 @@ ht_cell_t* ht_cell_value_add(ht_t *ht, str *name, int val, int mode,
 				return NULL;
 			} else {
 				it->value.n += val;
-				it->expire = now + ht->htexpire;
+				if(ht->updateexpire)
+					it->expire = now + ht->htexpire;
 				if(old!=NULL)
 				{
 					if(old->msize>=it->msize)