Sockets: running actors get TCP, UDP, and DNS through wasi:sockets; candidates get no network

This commit is contained in:
2026-10-15 19:27:45 +01:00
parent c636eb0803
commit 285f77a9e2
7 changed files with 62 additions and 11 deletions
+6 -2
View File
@@ -126,7 +126,8 @@ impl std::fmt::Display for Exit {
pub struct InstanceConfig {
pub mounts: Vec<Mount>,
pub allow_http: bool,
/// Outgoing HTTP, and TCP, UDP, and DNS through `wasi:sockets`.
pub network: bool,
pub stderr_log: PathBuf,
pub env: Vec<(String, String)>,
}
@@ -277,6 +278,9 @@ impl Runtime {
.with_context(|| format!("open {}", cfg.stderr_log.display()))?;
let mut b = WasiCtx::builder();
if cfg.network {
b.inherit_network().allow_tcp(true).allow_udp(true).allow_ip_name_lookup(true);
}
b.stdin(AsyncStdinStream::new(guest_in));
b.stdout(AsyncStdoutStream::new(8192, guest_out));
b.stderr(AsyncStdoutStream::new(8192, tokio::fs::File::from_std(stderr)));
@@ -293,7 +297,7 @@ impl Runtime {
wasi: WasiPart { ctx: b.build(), table: ResourceTable::new() },
fsx: FsExt::new(cfg.mounts),
http: WasiHttpCtx::new(),
hooks: HttpHooks { allow: cfg.allow_http },
hooks: HttpHooks { allow: cfg.network },
};
let (line_tx, line_rx) = mpsc::channel(1024);