summaryrefslogtreecommitdiff
path: root/runtime
diff options
context:
space:
mode:
Diffstat (limited to 'runtime')
-rw-r--r--runtime/web_worker.rs8
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(())
}