Skip to content

Commit ef54456

Browse files
committedFeb 13, 2025
refactor(wasip3): use spawn on accessor
Signed-off-by: Roman Volosatovs <[email protected]>
1 parent a353a63 commit ef54456

File tree

1 file changed

+19
-10
lines changed
  • crates/wasi/src/p3/sockets/host/types

1 file changed

+19
-10
lines changed
 

‎crates/wasi/src/p3/sockets/host/types/tcp.rs

+19-10
Original file line numberDiff line numberDiff line change
@@ -230,7 +230,7 @@ where
230230
store: &mut Accessor<Self::TcpSocketData>,
231231
socket: Resource<TcpSocket>,
232232
) -> wasmtime::Result<Result<StreamReader<Resource<TcpSocket>>, ErrorCode>> {
233-
store.with(|mut store| {
233+
match store.with(|mut store| {
234234
let data = store.data_mut();
235235
if !data.sockets().allowed_network_uses.tcp {
236236
return Ok(Err(ErrorCode::AccessDenied));
@@ -256,18 +256,20 @@ where
256256
Ok(listener) => {
257257
let listener = Arc::new(listener);
258258
let (abort_tx, abort_rx) = oneshot::channel();
259-
store.spawn(ListenTask {
260-
listener: Arc::clone(&listener),
261-
family,
262-
tx,
263-
abort: abort_rx,
264-
});
265259
let socket = get_socket_mut(store.data_mut().table(), &socket)?;
266260
socket.tcp_state = TcpState::Listening {
267-
listener,
261+
listener: listener.clone(),
268262
abort: abort_tx,
269263
};
270-
Ok(Ok(rx))
264+
Ok(Ok((
265+
rx,
266+
ListenTask {
267+
listener,
268+
family,
269+
tx,
270+
abort: abort_rx,
271+
},
272+
)))
271273
}
272274
Err(err) => {
273275
match Errno::from_io_error(&err) {
@@ -287,7 +289,14 @@ where
287289
}
288290
}
289291
}
290-
})
292+
}) {
293+
Ok(Ok((rx, task))) => {
294+
store.spawn(task);
295+
Ok(Ok(rx))
296+
}
297+
Ok(Err(err)) => Ok(Err(err)),
298+
Err(err) => Err(err),
299+
}
291300
}
292301

293302
async fn send(

0 commit comments

Comments
 (0)