Skip to content

Commit 9b6475a

Browse files
authored
feat: handle WeakActorRef::upgrade() failure gracefully (#142)
2 parents 06f5999 + d9219ec commit 9b6475a

File tree

1 file changed

+14
-2
lines changed

1 file changed

+14
-2
lines changed

crates/libtortillas/src/engine/actor.rs

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -181,9 +181,15 @@ impl Actor for EngineActor {
181181
peer_stream = self.tcp_socket.accept() => match peer_stream {
182182
Ok((stream, _)) => {
183183
let peer_stream = Box::new(PeerStream::Tcp(stream));
184+
185+
let Some(actor_ref) = actor_ref.upgrade() else {
186+
error!("Failed to upgrade weak actor reference");
187+
return None;
188+
};
189+
184190
Some(Signal::Message {
185191
message: Box::new(EngineMessage::IncomingPeer(peer_stream)),
186-
actor_ref: actor_ref.upgrade().unwrap(),
192+
actor_ref,
187193
reply: None,
188194
sent_within_actor: true,
189195
})
@@ -196,9 +202,15 @@ impl Actor for EngineActor {
196202
peer_stream = self.utp_socket.accept() => match peer_stream {
197203
Ok(stream) => {
198204
let peer_stream = Box::new(PeerStream::Utp(stream));
205+
206+
let Some(actor_ref) = actor_ref.upgrade() else {
207+
error!("Failed to upgrade weak actor reference");
208+
return None;
209+
};
210+
199211
Some(Signal::Message {
200212
message: Box::new(EngineMessage::IncomingPeer(peer_stream)),
201-
actor_ref: actor_ref.upgrade().unwrap(),
213+
actor_ref,
202214
reply: None,
203215
sent_within_actor: true,
204216
})

0 commit comments

Comments
 (0)