diff --git a/wg-event-gen/src/main.rs b/wg-event-gen/src/main.rs index 8a96683..609a9ee 100644 --- a/wg-event-gen/src/main.rs +++ b/wg-event-gen/src/main.rs @@ -17,9 +17,10 @@ use controller::Userspace; use model::WireguardController; use opts::Opts; use std::collections::HashMap; +use std::error::Error; use std::io; use std::thread::sleep; -use std::time::{Duration, SystemTime,Instant, UNIX_EPOCH}; +use std::time::{Duration, Instant, SystemTime, UNIX_EPOCH}; use structopt::StructOpt; fn listeners(opts: &Opts) -> Vec> { @@ -49,7 +50,17 @@ fn main() -> io::Result<()> { let start = SystemTime::now(); loop { let now = Instant::now(); - let peers = controller.peers()?; + let peers = match controller.peers() { + Err(ref err) if opts.ignore_socket_errors => { + eprintln!( + "Encountered error while querying Wireguard: {}", + err.description() + ); + sleep(interval); + continue; + } + res => res?, + }; /*println!("Connected peers:"); for peer in peers { let peer = peer?;