mirror of
https://github.com/mikedilger/gossip.git
synced 2024-09-20 03:57:03 +00:00
Change subscriptions_waiting_for_auth into a hashmap so it can't get duplicates
This commit is contained in:
parent
cf4f04fc0d
commit
02258d88db
@ -273,7 +273,7 @@ impl Minion {
|
||||
|
||||
// cork and retry once auth completes
|
||||
self.subscriptions_waiting_for_auth
|
||||
.push((handle, Unixtime::now().unwrap()));
|
||||
.insert(handle, Unixtime::now().unwrap());
|
||||
|
||||
// return now, don't remove sub from map
|
||||
return Ok(());
|
||||
@ -281,7 +281,7 @@ impl Minion {
|
||||
AuthState::Waiting(_) => {
|
||||
// cork and retry once auth completes
|
||||
self.subscriptions_waiting_for_auth
|
||||
.push((handle, Unixtime::now().unwrap()));
|
||||
.insert(handle, Unixtime::now().unwrap());
|
||||
|
||||
// return now, don't remove sub from map
|
||||
return Ok(());
|
||||
|
@ -78,7 +78,7 @@ pub struct Minion {
|
||||
sought_events: HashMap<Id, EventSeekState>,
|
||||
last_message_sent: String,
|
||||
auth_challenge: String,
|
||||
subscriptions_waiting_for_auth: Vec<(String, Unixtime)>,
|
||||
subscriptions_waiting_for_auth: HashMap<String, Unixtime>,
|
||||
subscriptions_waiting_for_metadata: Vec<(u64, Vec<PublicKey>)>,
|
||||
subscriptions_rate_limited: Vec<String>,
|
||||
general_feed_keys: Vec<PublicKey>,
|
||||
@ -115,7 +115,7 @@ impl Minion {
|
||||
sought_events: HashMap::new(),
|
||||
last_message_sent: String::new(),
|
||||
auth_challenge: "".to_string(),
|
||||
subscriptions_waiting_for_auth: Vec::new(),
|
||||
subscriptions_waiting_for_auth: HashMap::new(),
|
||||
subscriptions_waiting_for_metadata: Vec::new(),
|
||||
subscriptions_rate_limited: Vec::new(),
|
||||
general_feed_keys: Vec::new(),
|
||||
@ -961,11 +961,11 @@ impl Minion {
|
||||
// Apply subscriptions that were waiting for auth
|
||||
let mut handles = std::mem::take(&mut self.subscriptions_waiting_for_auth);
|
||||
let now = Unixtime::now().unwrap();
|
||||
for (handle, when) in handles.drain(..) {
|
||||
for (handle, when) in handles.drain() {
|
||||
// Do not try if we just inserted it within the last second
|
||||
if when - now < Duration::from_secs(1) {
|
||||
// re-insert
|
||||
self.subscriptions_waiting_for_auth.push((handle, when));
|
||||
self.subscriptions_waiting_for_auth.insert(handle, when);
|
||||
continue;
|
||||
}
|
||||
|
||||
@ -1124,7 +1124,7 @@ impl Minion {
|
||||
if matches!(self.auth_state, AuthState::Waiting(_)) {
|
||||
// Save this, subscribe after AUTH completes
|
||||
self.subscriptions_waiting_for_auth
|
||||
.push((handle.to_owned(), Unixtime::now().unwrap()));
|
||||
.insert(handle.to_owned(), Unixtime::now().unwrap());
|
||||
return Ok(());
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user