diff options
Diffstat (limited to 'runtime')
| -rw-r--r-- | runtime/web_worker.rs | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/runtime/web_worker.rs b/runtime/web_worker.rs index 68bbe1a5d..8c8761d62 100644 --- a/runtime/web_worker.rs +++ b/runtime/web_worker.rs @@ -67,6 +67,14 @@ impl WebWorkerHandle { /// Post message to worker as a host. pub fn post_message(&self, buf: Box<[u8]>) -> Result<(), AnyError> { let mut sender = self.sender.clone(); + // If the channel is closed, + // the worker must have terminated but the termination message has not yet been recieved. + // + // Therefore just treat it as if the worker has terminated and return. + if sender.is_closed() { + self.terminated.store(true, Ordering::SeqCst); + return Ok(()); + } sender.try_send(buf)?; Ok(()) } |
