Skip to content

Commit f17d903

Browse files
Merge pull request #1032 from Luap99/aardvark-err
fix aardvark-dns error handling
2 parents 384fa52 + ed0dad1 commit f17d903

File tree

1 file changed

+24
-5
lines changed

1 file changed

+24
-5
lines changed

src/dns/aardvark.rs

Lines changed: 24 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -116,16 +116,35 @@ impl Aardvark {
116116
// After https://github.com/containers/aardvark-dns/pull/148 this command
117117
// will block till aardvark-dns's parent process returns back and let
118118
// aardvark inherit all the fds.
119-
Command::new(aardvark_args[0])
119+
let out = Command::new(aardvark_args[0])
120120
.args(&aardvark_args[1..])
121-
.stdin(Stdio::inherit())
122-
.stdout(Stdio::inherit())
123-
.stderr(Stdio::inherit())
121+
.stdin(Stdio::null())
122+
.stdout(Stdio::null())
124123
// set RUST_LOG for aardvark
125124
.env("RUST_LOG", log::max_level().as_str())
126125
.output()?;
127126

128-
Ok(())
127+
if out.status.success() {
128+
return Ok(());
129+
}
130+
if out.stderr.is_empty() {
131+
return Err(std::io::Error::new(
132+
std::io::ErrorKind::Other,
133+
"aardvark-dns exited unexpectedly without error message",
134+
));
135+
}
136+
// aardvark-dns failed capture stderr
137+
let msg = String::from_utf8(out.stderr).map_err(|e| {
138+
std::io::Error::new(
139+
std::io::ErrorKind::Other,
140+
format!("failed to parse aardvark-dns stderr message: {e}"),
141+
)
142+
})?;
143+
144+
Err(std::io::Error::new(
145+
std::io::ErrorKind::Other,
146+
format!("aardvark-dns failed to start: {}", msg),
147+
))
129148
}
130149

131150
fn check_netns(&self, pid: pid_t) {

0 commit comments

Comments
 (0)