Skip to content

Commit ee54e4b

Browse files
committed
guest-agent: preserve non-unix internal listener support
1 parent d6118c5 commit ee54e4b

1 file changed

Lines changed: 47 additions & 21 deletions

File tree

guest-agent/src/server.rs

Lines changed: 47 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ use ra_rpc::rocket_helper::UnixPeerCredListener;
1414
use rocket::{
1515
fairing::AdHoc,
1616
figment::Figment,
17-
listener::{unix::UnixListener, Bind, DefaultListener},
17+
listener::{unix::UnixListener, Bind, DefaultListener, Endpoint},
1818
};
1919
use rocket_vsock_listener::VsockListener;
2020
use sd_notify::{notify as sd_notify, NotifyState};
@@ -51,18 +51,31 @@ async fn run_internal_v0(
5151
.await
5252
.map_err(|err: rocket::Error| anyhow!(err.to_string()))?;
5353
} else {
54-
let endpoint = UnixListener::bind_endpoint(&ignite)
54+
let endpoint = DefaultListener::bind_endpoint(&ignite)
5555
.map_err(|err| anyhow!("Failed to get endpoint: {err}"))?;
56-
let listener = UnixPeerCredListener::new(
57-
<UnixListener as Bind>::bind(&ignite)
58-
.await
59-
.map_err(|err| anyhow!("Failed to bind on {endpoint}: {err}"))?,
60-
);
6156
sock_ready_tx.send(()).ok();
62-
ignite
63-
.launch_on(listener)
64-
.await
65-
.map_err(|err| anyhow!(err.to_string()))?;
57+
match endpoint {
58+
Endpoint::Unix(_) => {
59+
let listener = UnixPeerCredListener::new(
60+
<UnixListener as Bind>::bind(&ignite)
61+
.await
62+
.map_err(|err| anyhow!("Failed to bind on {endpoint}: {err}"))?,
63+
);
64+
ignite
65+
.launch_on(listener)
66+
.await
67+
.map_err(|err| anyhow!(err.to_string()))?;
68+
}
69+
_ => {
70+
let listener = DefaultListener::bind(&ignite)
71+
.await
72+
.map_err(|err| anyhow!("Failed to bind on {endpoint}: {err}"))?;
73+
ignite
74+
.launch_on(listener)
75+
.await
76+
.map_err(|err| anyhow!(err.to_string()))?;
77+
}
78+
}
6679
}
6780
Ok(())
6881
}
@@ -90,18 +103,31 @@ async fn run_internal(
90103
.await
91104
.map_err(|err: rocket::Error| anyhow!(err.to_string()))?;
92105
} else {
93-
let endpoint = UnixListener::bind_endpoint(&ignite)
106+
let endpoint = DefaultListener::bind_endpoint(&ignite)
94107
.map_err(|err| anyhow!("Failed to get endpoint: {err}"))?;
95-
let listener = UnixPeerCredListener::new(
96-
<UnixListener as Bind>::bind(&ignite)
97-
.await
98-
.map_err(|err| anyhow!("Failed to bind on {endpoint}: {err}"))?,
99-
);
100108
sock_ready_tx.send(()).ok();
101-
ignite
102-
.launch_on(listener)
103-
.await
104-
.map_err(|err| anyhow!(err.to_string()))?;
109+
match endpoint {
110+
Endpoint::Unix(_) => {
111+
let listener = UnixPeerCredListener::new(
112+
<UnixListener as Bind>::bind(&ignite)
113+
.await
114+
.map_err(|err| anyhow!("Failed to bind on {endpoint}: {err}"))?,
115+
);
116+
ignite
117+
.launch_on(listener)
118+
.await
119+
.map_err(|err| anyhow!(err.to_string()))?;
120+
}
121+
_ => {
122+
let listener = DefaultListener::bind(&ignite)
123+
.await
124+
.map_err(|err| anyhow!("Failed to bind on {endpoint}: {err}"))?;
125+
ignite
126+
.launch_on(listener)
127+
.await
128+
.map_err(|err| anyhow!(err.to_string()))?;
129+
}
130+
}
105131
}
106132
Ok(())
107133
}

0 commit comments

Comments
 (0)