diff options
author | Matthew Heon <matthew.heon@pm.me> | 2024-01-30 13:04:17 -0500 |
---|---|---|
committer | Matthew Heon <matthew.heon@pm.me> | 2024-01-31 09:27:29 -0500 |
commit | 45f158118d4b47ba8c66cd245edc9ac8256017c2 (patch) | |
tree | 98317f95fda247a42e27509e08d9480e0e2c7b55 /src | |
parent | 86ce937519f51750967aca750c766b00bec4ac39 (diff) |
Do not perform network namespace detection on AV update
Update is not required to be in the same network namespace as
everything else, because we're just restarting an existing server
with an updated config. Make the check for Aardvark's netns only
happen if we are not updating as such.
Fixes #911
Signed-off-by: Matthew Heon <matthew.heon@pm.me>
Diffstat (limited to 'src')
-rw-r--r-- | src/dns/aardvark.rs | 34 |
1 files changed, 19 insertions, 15 deletions
diff --git a/src/dns/aardvark.rs b/src/dns/aardvark.rs index f5d0958..ba68d27 100644 --- a/src/dns/aardvark.rs +++ b/src/dns/aardvark.rs @@ -146,23 +146,27 @@ impl Aardvark { Ok(()) } - pub fn notify(&self, start: bool) -> NetavarkResult<()> { + pub fn notify(&self, start: bool, is_update: bool) -> NetavarkResult<()> { match self.get_aardvark_pid() { Ok(pid) => { match signal::kill(Pid::from_raw(pid), Signal::SIGHUP) { - Ok(_) => match self.check_netns(pid) { - Ok(_) => return Ok(()), - Err(e) => { - // If the error is ENOENT it means the process must have died in - // the meantime so drop down below to start a new server process. - if e.kind() != std::io::ErrorKind::NotFound { - return Err(NetavarkError::wrap( - "check aardvark-dns netns", - e.into(), - )); + Ok(_) => { + if !is_update { + match self.check_netns(pid) { + Ok(_) => return Ok(()), + Err(e) => { + // If the error is ENOENT it means the process must have died in + // the meantime so drop down below to start a new server process. + if e.kind() != std::io::ErrorKind::NotFound { + return Err(NetavarkError::wrap( + "check aardvark-dns netns", + e.into(), + )); + } + } } } - }, + } Err(err) => { // ESRCH == process does not exists // start new sever below in that case and not error @@ -312,7 +316,7 @@ impl Aardvark { pub fn commit_netavark_entries(&self, entries: Vec<AardvarkEntry>) -> NetavarkResult<()> { if !entries.is_empty() { self.commit_entries(entries)?; - self.notify(true)?; + self.notify(true, false)?; } Ok(()) } @@ -407,7 +411,7 @@ impl Aardvark { // If dns servers were updated notify the aardvark-dns server // if refresh is needed. if dns_servers_modified { - self.notify(false)?; + self.notify(false, true)?; } Ok(()) @@ -417,6 +421,6 @@ impl Aardvark { for entry in &entries { self.delete_entry(entry.container_id, entry.network_name)?; } - self.notify(false) + self.notify(false, false) } } |