@@ -230,7 +230,7 @@ where
230
230
store : & mut Accessor < Self :: TcpSocketData > ,
231
231
socket : Resource < TcpSocket > ,
232
232
) -> wasmtime:: Result < Result < StreamReader < Resource < TcpSocket > > , ErrorCode > > {
233
- store. with ( |mut store| {
233
+ match store. with ( |mut store| {
234
234
let data = store. data_mut ( ) ;
235
235
if !data. sockets ( ) . allowed_network_uses . tcp {
236
236
return Ok ( Err ( ErrorCode :: AccessDenied ) ) ;
@@ -256,18 +256,20 @@ where
256
256
Ok ( listener) => {
257
257
let listener = Arc :: new ( listener) ;
258
258
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
- } ) ;
265
259
let socket = get_socket_mut ( store. data_mut ( ) . table ( ) , & socket) ?;
266
260
socket. tcp_state = TcpState :: Listening {
267
- listener,
261
+ listener : listener . clone ( ) ,
268
262
abort : abort_tx,
269
263
} ;
270
- Ok ( Ok ( rx) )
264
+ Ok ( Ok ( (
265
+ rx,
266
+ ListenTask {
267
+ listener,
268
+ family,
269
+ tx,
270
+ abort : abort_rx,
271
+ } ,
272
+ ) ) )
271
273
}
272
274
Err ( err) => {
273
275
match Errno :: from_io_error ( & err) {
@@ -287,7 +289,14 @@ where
287
289
}
288
290
}
289
291
}
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
+ }
291
300
}
292
301
293
302
async fn send (
0 commit comments