Compare commits

..

No commits in common. "1e3cb6282270ea7df8ac6823493da2c935f1d16b" and "b4d0fc75a8eda7c53b91c58b509a5b07a667e361" have entirely different histories.

3 changed files with 8 additions and 31 deletions

View File

@ -64,14 +64,7 @@ pub fn blocked_in(
let mut blocked_in = HashSet::<String>::new(); let mut blocked_in = HashSet::<String>::new();
let today = date; let today = date;
for (country, info) in &bridge_info.info_by_country { for (country, info) in &bridge_info.info_by_country {
// If we haven't seen this bridge yet, return empty set
if today < info.first_seen {
return HashSet::<String>::new();
}
// (The part above prevents potential errors here.)
let age = today - info.first_seen; let age = today - info.first_seen;
if info.blocked { if info.blocked {
// Assume bridges never become unblocked // Assume bridges never become unblocked
blocked_in.insert(country.to_string()); blocked_in.insert(country.to_string());

View File

@ -794,7 +794,7 @@ pub fn guess_blockages(
// Guess for each bridge // Guess for each bridge
for fingerprint in bridges { for fingerprint in bridges {
let today = get_date(); let today = get_date();
let bridge_info: BridgeInfo = let mut bridge_info: BridgeInfo =
bincode::deserialize(&db.get(fingerprint).unwrap().unwrap()).unwrap(); bincode::deserialize(&db.get(fingerprint).unwrap().unwrap()).unwrap();
let mut new_blockages = HashSet::<String>::new(); let mut new_blockages = HashSet::<String>::new();
let fpr_str = array_bytes::bytes2hex("", fingerprint); let fpr_str = array_bytes::bytes2hex("", fingerprint);
@ -817,13 +817,19 @@ pub fn guess_blockages(
max_historical_days, max_historical_days,
); );
for country in blocked_in { for country in blocked_in {
let bridge_country_info = bridge_info.info_by_country.get(&country).unwrap(); let bridge_country_info = bridge_info.info_by_country.get_mut(&country).unwrap();
if !bridge_country_info.blocked { if !bridge_country_info.blocked {
new_blockages.insert(country.to_string()); new_blockages.insert(country.to_string());
// Mark bridge as blocked when db gets updated
bridge_country_info.blocked = true;
} }
} }
} }
blockages.insert(fingerprint, new_blockages); blockages.insert(fingerprint, new_blockages);
// Commit changes to database
db.insert(fingerprint, bincode::serialize(&bridge_info).unwrap())
.unwrap();
} }
// Remove all bridges to re-evaluate from DB // Remove all bridges to re-evaluate from DB
@ -837,26 +843,6 @@ pub fn guess_blockages(
blockages blockages
} }
/// Commit blocked bridges to database
pub fn commit_blockages(db: &Db, blockages: &HashMap<[u8; 20], HashSet<String>>) {
// For each bridge:<set of countries>, mark the bridge as blocked in each country
for (fingerprint, countries) in blockages {
if let Some(v) = db.get(&fingerprint).unwrap() {
let mut bridge_info: BridgeInfo = bincode::deserialize(&v).unwrap();
for country in countries {
if let Some(bridge_country_info) = bridge_info.info_by_country.get_mut(country) {
bridge_country_info.blocked = true;
}
}
// Commit changes to database
db.insert(fingerprint, bincode::serialize(&bridge_info).unwrap())
.unwrap();
}
}
}
/// Report blocked bridges to bridge distributor /// Report blocked bridges to bridge distributor
pub async fn report_blockages( pub async fn report_blockages(
distributors: &BTreeMap<BridgeDistributor, String>, distributors: &BTreeMap<BridgeDistributor, String>,

View File

@ -109,8 +109,6 @@ async fn update_daily_info(
min_historical_days, min_historical_days,
max_historical_days, max_historical_days,
); );
// TODO: Verify the new blockages
commit_blockages(db, &new_blockages);
report_blockages(distributors, new_blockages.clone()).await; report_blockages(distributors, new_blockages.clone()).await;
// Generate tomorrow's key if we don't already have it // Generate tomorrow's key if we don't already have it