diff options
author | metamuffin <metamuffin@disroot.org> | 2022-10-15 12:47:31 +0200 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2022-10-15 12:47:31 +0200 |
commit | 05df2017e970b049546c893f8564d112c89c5b40 (patch) | |
tree | 926375065645be690d3e0bb9a187c4c93b8e50fa | |
parent | 77f6b0d44c2d653cfcdb511a9f91f11aab81ddc5 (diff) | |
download | keks-meet-05df2017e970b049546c893f8564d112c89c5b40.tar keks-meet-05df2017e970b049546c893f8564d112c89c5b40.tar.bz2 keks-meet-05df2017e970b049546c893f8564d112c89c5b40.tar.zst |
fix crash
-rw-r--r-- | client-native-lib/src/peer.rs | 15 | ||||
-rw-r--r-- | client-native-rift/src/main.rs | 9 |
2 files changed, 17 insertions, 7 deletions
diff --git a/client-native-lib/src/peer.rs b/client-native-lib/src/peer.rs index fa4de25..8e89f48 100644 --- a/client-native-lib/src/peer.rs +++ b/client-native-lib/src/peer.rs @@ -77,12 +77,15 @@ impl Peer { let weak = Arc::<Peer>::downgrade(&peer); peer.peer_connection .on_ice_candidate(box move |c| { - let peer = weak.upgrade().unwrap(); - Box::pin(async move { - if let Some(c) = c { - peer.on_ice_candidate(c).await - } - }) + if let Some(peer) = weak.upgrade() { + Box::pin(async move { + if let Some(c) = c { + peer.on_ice_candidate(c).await + } + }) + } else { + Box::pin(async move {}) + } }) .await; } diff --git a/client-native-rift/src/main.rs b/client-native-rift/src/main.rs index 48dac0b..e00d4c9 100644 --- a/client-native-rift/src/main.rs +++ b/client-native-rift/src/main.rs @@ -259,6 +259,7 @@ impl LocalResource for FileSender { fn on_request(&self, peer: Arc<Peer>) -> DynFut<()> { let id = self.info().id.clone(); + let total_size = self.info().size.unwrap_or(0); let reader_factory = self.reader_factory.clone(); Box::pin(async move { let channel = peer @@ -299,6 +300,7 @@ impl LocalResource for FileSender { let channel2 = channel.clone(); channel .on_buffered_amount_low(box move || { + let pos = pos.clone(); let reader = reader.clone(); let channel = channel2.clone(); Box::pin(async move { @@ -316,7 +318,12 @@ impl LocalResource for FileSender { info!("reached EOF, closing channel"); channel.close().await.unwrap(); } else { - debug!("sending {size} bytes"); + let progress_size = pos.fetch_add(size, Ordering::Relaxed); + info!( + "sending {size} bytes ({} of {})", + humansize::format_size(progress_size, DECIMAL), + humansize::format_size(total_size, DECIMAL), + ); channel .send(&Bytes::copy_from_slice(&buf[..size])) .await |