Merge branch 'timeout' into new_events
This commit is contained in:
commit
ceb3d7b77d
@ -1 +1 @@
|
|||||||
Subproject commit cabd96987454add6785c6363e4846ef1ff09101e
|
Subproject commit 1f842a618a4efb460841a3e0104f4979b21a2485
|
@ -30,23 +30,9 @@ pub(crate) fn gen_events(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
let timedout_now = || {
|
let timedout_now = || !cur.last_handshake.is_some();
|
||||||
if let Some(shake) = cur.last_handshake {
|
|
||||||
if let Ok(el) = shake.elapsed() {
|
|
||||||
return el > timeout && el + poll_interval < timeout;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
true
|
|
||||||
};
|
|
||||||
|
|
||||||
let timedout_prev = || {
|
let timedout_prev = || !prev.last_handshake.is_some();
|
||||||
if let Some(shake) = prev.last_handshake {
|
|
||||||
if let Ok(el) = shake.elapsed().map(|el| el - poll_interval) {
|
|
||||||
return el > timeout && el < timeout + poll_interval;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
true
|
|
||||||
};
|
|
||||||
|
|
||||||
match (
|
match (
|
||||||
timedout_prev(),
|
timedout_prev(),
|
||||||
|
@ -17,9 +17,10 @@ use controller::Userspace;
|
|||||||
use model::WireguardController;
|
use model::WireguardController;
|
||||||
use opts::Opts;
|
use opts::Opts;
|
||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
|
use std::error::Error;
|
||||||
use std::io;
|
use std::io;
|
||||||
use std::thread::sleep;
|
use std::thread::sleep;
|
||||||
use std::time::{Duration, SystemTime,Instant, UNIX_EPOCH};
|
use std::time::{Duration, Instant, SystemTime, UNIX_EPOCH};
|
||||||
use structopt::StructOpt;
|
use structopt::StructOpt;
|
||||||
|
|
||||||
fn listeners(opts: &Opts) -> Vec<Box<EventListener>> {
|
fn listeners(opts: &Opts) -> Vec<Box<EventListener>> {
|
||||||
@ -30,6 +31,7 @@ fn listeners(opts: &Opts) -> Vec<Box<EventListener>> {
|
|||||||
if opts.log {
|
if opts.log {
|
||||||
listeners.push(Box::new(LogListener));
|
listeners.push(Box::new(LogListener));
|
||||||
}
|
}
|
||||||
|
println!("Enabled handlers: {}", (&listeners.iter().map(|l| l.name()).collect::<Vec<_>>()).join(", "));
|
||||||
listeners
|
listeners
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -46,33 +48,23 @@ fn main() -> io::Result<()> {
|
|||||||
interval
|
interval
|
||||||
);
|
);
|
||||||
let mut peers_last: Option<HashMap<ECCKey, Peer>> = None;
|
let mut peers_last: Option<HashMap<ECCKey, Peer>> = None;
|
||||||
let start = SystemTime::now();
|
|
||||||
loop {
|
loop {
|
||||||
let now = Instant::now();
|
let now = Instant::now();
|
||||||
let peers = controller.peers()?;
|
let peers = match controller.peers() {
|
||||||
/*println!("Connected peers:");
|
Err(ref err) if opts.ignore_socket_errors => {
|
||||||
for peer in peers {
|
eprintln!(
|
||||||
let peer = peer?;
|
"Encountered error while querying Wireguard: {}",
|
||||||
if peer
|
err.description()
|
||||||
.last_handshake
|
);
|
||||||
.map(|h| h.elapsed().unwrap() < timeout)
|
sleep(interval);
|
||||||
.unwrap_or(false)
|
continue;
|
||||||
{
|
|
||||||
println!("/\\{:?} {}",(timeout - peer.last_handshake.unwrap().elapsed().unwrap()), peer);
|
|
||||||
}
|
}
|
||||||
}*/
|
res => res?,
|
||||||
|
};
|
||||||
let peers = peers
|
let peers = peers
|
||||||
.map(|peer| peer.map(|peer_ok| (peer_ok.key.clone(), peer_ok)))
|
.map(|peer| peer.map(|peer_ok| (peer_ok.key.clone(), peer_ok)))
|
||||||
.collect::<io::Result<HashMap<_, _>>>()?;
|
.collect::<io::Result<HashMap<_, _>>>()?;
|
||||||
for (k, p) in peers.iter() {
|
|
||||||
if let Some(shake) = p.last_handshake {
|
|
||||||
println!(
|
|
||||||
"{} {:?}",
|
|
||||||
k.to_string()[0..5].to_string(),
|
|
||||||
shake.duration_since(start).unwrap()
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if let Some(ref mut peers_last) = peers_last {
|
if let Some(ref mut peers_last) = peers_last {
|
||||||
gen_events(&peers, &peers_last, &listeners, timeout, interval);
|
gen_events(&peers, &peers_last, &listeners, timeout, interval);
|
||||||
|
|
||||||
@ -81,7 +73,7 @@ fn main() -> io::Result<()> {
|
|||||||
peers_last = Some(peers);
|
peers_last = Some(peers);
|
||||||
}
|
}
|
||||||
let pause = interval - now.elapsed();
|
let pause = interval - now.elapsed();
|
||||||
dbg!(interval - pause);
|
|
||||||
sleep(if pause > interval / 2 {
|
sleep(if pause > interval / 2 {
|
||||||
pause
|
pause
|
||||||
} else {
|
} else {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user