even more diagnostic output
parent
595367ab87
commit
f3a100d44b
|
@ -26,6 +26,7 @@ impl<'a> NatTraverse<'a> {
|
||||||
backend: Backend,
|
backend: Backend,
|
||||||
diffs: &[PeerDiff],
|
diffs: &[PeerDiff],
|
||||||
) -> Result<Self, Error> {
|
) -> Result<Self, Error> {
|
||||||
|
log::trace!("NatTraverse::new()");
|
||||||
// Filter out removed peers from diffs list.
|
// Filter out removed peers from diffs list.
|
||||||
let mut remaining: Vec<_> = diffs.iter().filter_map(|diff| diff.new).cloned().collect();
|
let mut remaining: Vec<_> = diffs.iter().filter_map(|diff| diff.new).cloned().collect();
|
||||||
|
|
||||||
|
@ -59,7 +60,9 @@ impl<'a> NatTraverse<'a> {
|
||||||
/// the peers that have been exhausted of all options (not included are
|
/// the peers that have been exhausted of all options (not included are
|
||||||
/// peers that have successfully connected, or peers removed from the interface).
|
/// peers that have successfully connected, or peers removed from the interface).
|
||||||
fn refresh_remaining(&mut self) -> Result<Vec<Peer>, Error> {
|
fn refresh_remaining(&mut self) -> Result<Vec<Peer>, Error> {
|
||||||
|
log::trace!("NatTraverse::refresh_remaining()");
|
||||||
let device = Device::get(self.interface, self.backend)?;
|
let device = Device::get(self.interface, self.backend)?;
|
||||||
|
log::trace!("NatTraverse: retrieved device info.");
|
||||||
// Remove connected and missing peers
|
// Remove connected and missing peers
|
||||||
self.remaining.retain(|peer| {
|
self.remaining.retain(|peer| {
|
||||||
if let Some(peer_info) = device.get_peer(&peer.public_key) {
|
if let Some(peer_info) = device.get_peer(&peer.public_key) {
|
||||||
|
@ -84,10 +87,12 @@ impl<'a> NatTraverse<'a> {
|
||||||
.drain(..)
|
.drain(..)
|
||||||
.partition(|peer| peer.candidates.is_empty());
|
.partition(|peer| peer.candidates.is_empty());
|
||||||
self.remaining = remaining;
|
self.remaining = remaining;
|
||||||
|
log::trace!("new remaining: {:?}", &self.remaining);
|
||||||
Ok(exhausted)
|
Ok(exhausted)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn step(&mut self) -> Result<(), Error> {
|
pub fn step(&mut self) -> Result<(), Error> {
|
||||||
|
log::trace!("NatTraverse::step()");
|
||||||
let exhausted = self.refresh_remaining()?;
|
let exhausted = self.refresh_remaining()?;
|
||||||
|
|
||||||
// Reset peer endpoints that had no viable candidates back to the server-reported one, if it exists.
|
// Reset peer endpoints that had no viable candidates back to the server-reported one, if it exists.
|
||||||
|
@ -106,9 +111,11 @@ impl<'a> NatTraverse<'a> {
|
||||||
|
|
||||||
let updates: Vec<_> = reset_updates.chain(candidate_updates).collect();
|
let updates: Vec<_> = reset_updates.chain(candidate_updates).collect();
|
||||||
|
|
||||||
|
log::trace!("NatTraverse: applying changes to device...");
|
||||||
DeviceUpdate::new()
|
DeviceUpdate::new()
|
||||||
.add_peers(&updates)
|
.add_peers(&updates)
|
||||||
.apply(self.interface, self.backend)?;
|
.apply(self.interface, self.backend)?;
|
||||||
|
log::trace!("NatTraverse: applied changes to device.");
|
||||||
|
|
||||||
let start = Instant::now();
|
let start = Instant::now();
|
||||||
while start.elapsed() < STEP_INTERVAL {
|
while start.elapsed() < STEP_INTERVAL {
|
||||||
|
|
Loading…
Reference in New Issue