Begin work on cleaning up old nonces
This commit is contained in:
parent
158512f427
commit
5c6a076289
56
src/lib.rs
56
src/lib.rs
|
@ -321,30 +321,44 @@ pub async fn update_extra_infos(
|
||||||
/// We store to-be-processed negative reports as a vector. Add this NR
|
/// We store to-be-processed negative reports as a vector. Add this NR
|
||||||
/// to that vector (or create a new vector if necessary)
|
/// to that vector (or create a new vector if necessary)
|
||||||
pub fn save_negative_report_to_process(db: &Db, nr: NegativeReport) {
|
pub fn save_negative_report_to_process(db: &Db, nr: NegativeReport) {
|
||||||
let mut reports = match db.get("nrs-to-process").unwrap() {
|
// TODO: Purge these database entries sometimes
|
||||||
|
let mut nonces = match db.get(format!("nonces_{}", &nr.date)).unwrap() {
|
||||||
Some(v) => bincode::deserialize(&v).unwrap(),
|
Some(v) => bincode::deserialize(&v).unwrap(),
|
||||||
None => BTreeMap::<String, Vec<SerializableNegativeReport>>::new(),
|
None => HashSet::<[u8; 32]>::new(),
|
||||||
};
|
};
|
||||||
// Store to-be-processed reports with key [fingerprint]_[country]_[date]
|
|
||||||
let map_key = format!(
|
// Just ignore the report if we've seen the nonce before
|
||||||
"{}_{}_{}",
|
if nonces.insert(nr.nonce) {
|
||||||
array_bytes::bytes2hex("", &nr.fingerprint),
|
db.insert(
|
||||||
&nr.country,
|
format!("nonces_{}", &nr.date),
|
||||||
&nr.date,
|
bincode::serialize(&nonces).unwrap(),
|
||||||
);
|
)
|
||||||
if reports.contains_key(&map_key) {
|
|
||||||
reports
|
|
||||||
.get_mut(&map_key)
|
|
||||||
.unwrap()
|
|
||||||
.push(nr.to_serializable_report());
|
|
||||||
} else {
|
|
||||||
let mut nrs = Vec::<SerializableNegativeReport>::new();
|
|
||||||
nrs.push(nr.to_serializable_report());
|
|
||||||
reports.insert(map_key, nrs);
|
|
||||||
}
|
|
||||||
// Commit changes to database
|
|
||||||
db.insert("nrs-to-process", bincode::serialize(&reports).unwrap())
|
|
||||||
.unwrap();
|
.unwrap();
|
||||||
|
let mut reports = match db.get("nrs-to-process").unwrap() {
|
||||||
|
Some(v) => bincode::deserialize(&v).unwrap(),
|
||||||
|
None => BTreeMap::<String, Vec<SerializableNegativeReport>>::new(),
|
||||||
|
};
|
||||||
|
// Store to-be-processed reports with key [fingerprint]_[country]_[date]
|
||||||
|
let map_key = format!(
|
||||||
|
"{}_{}_{}",
|
||||||
|
array_bytes::bytes2hex("", &nr.fingerprint),
|
||||||
|
&nr.country,
|
||||||
|
&nr.date,
|
||||||
|
);
|
||||||
|
if reports.contains_key(&map_key) {
|
||||||
|
reports
|
||||||
|
.get_mut(&map_key)
|
||||||
|
.unwrap()
|
||||||
|
.push(nr.to_serializable_report());
|
||||||
|
} else {
|
||||||
|
let mut nrs = Vec::<SerializableNegativeReport>::new();
|
||||||
|
nrs.push(nr.to_serializable_report());
|
||||||
|
reports.insert(map_key, nrs);
|
||||||
|
}
|
||||||
|
// Commit changes to database
|
||||||
|
db.insert("nrs-to-process", bincode::serialize(&reports).unwrap())
|
||||||
|
.unwrap();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Sends a collection of negative reports to the Lox Authority and returns the
|
/// Sends a collection of negative reports to the Lox Authority and returns the
|
||||||
|
|
Loading…
Reference in New Issue