Skip to content

Commit 94293c7

Browse files
fix/crash in data channel stats (#327)
1 parent 5a26344 commit 94293c7

File tree

3 files changed

+7
-9
lines changed

3 files changed

+7
-9
lines changed

webrtc/src/data_channel/mod.rs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -550,10 +550,8 @@ impl RTCDataChannel {
550550
}
551551

552552
pub(crate) async fn collect_stats(&self, collector: &StatsCollector) {
553-
collector.insert(
554-
self.stats_id.clone(),
555-
StatsReportType::DataChannel(DataChannelStats::from(self)),
556-
);
553+
let stats = DataChannelStats::from(self).await;
554+
collector.insert(self.stats_id.clone(), StatsReportType::DataChannel(stats));
557555
}
558556

559557
pub(crate) fn set_ready_state(&self, r: RTCDataChannelState) {

webrtc/src/sctp_transport/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -374,7 +374,7 @@ impl RTCSctpTransport {
374374

375375
// data channels
376376
let mut data_channels_closed = 0;
377-
let data_channels = self.data_channels.try_lock().unwrap();
377+
let data_channels = self.data_channels.lock().await;
378378
for data_channel in &*data_channels {
379379
match data_channel.ready_state() {
380380
RTCDataChannelState::Connecting => (),

webrtc/src/stats/mod.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -367,16 +367,16 @@ pub struct DataChannelStats {
367367
pub state: RTCDataChannelState,
368368
}
369369

370-
impl From<&RTCDataChannel> for DataChannelStats {
371-
fn from(data_channel: &RTCDataChannel) -> Self {
370+
impl DataChannelStats {
371+
pub(crate) async fn from(data_channel: &RTCDataChannel) -> Self {
372372
let state = data_channel.ready_state();
373373

374374
let mut bytes_received = 0;
375375
let mut bytes_sent = 0;
376376
let mut messages_received = 0;
377377
let mut messages_sent = 0;
378378

379-
let lock = data_channel.data_channel.try_lock().unwrap();
379+
let lock = data_channel.data_channel.lock().await;
380380

381381
if let Some(internal) = &*lock {
382382
bytes_received = internal.bytes_received();
@@ -385,7 +385,7 @@ impl From<&RTCDataChannel> for DataChannelStats {
385385
messages_sent = internal.messages_sent();
386386
}
387387

388-
DataChannelStats {
388+
Self {
389389
bytes_received,
390390
bytes_sent,
391391
data_channel_identifier: data_channel.id(), // TODO: "The value is initially null"

0 commit comments

Comments
 (0)