summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMatthew Heon <matthew.heon@pm.me>2024-01-30 13:04:17 -0500
committerMatthew Heon <matthew.heon@pm.me>2024-01-31 09:27:29 -0500
commit45f158118d4b47ba8c66cd245edc9ac8256017c2 (patch)
tree98317f95fda247a42e27509e08d9480e0e2c7b55 /src
parent86ce937519f51750967aca750c766b00bec4ac39 (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.rs34
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)
}
}