[Stats] Handle the case of missing certificates.
Certificates being missing is a sign of a bug (e.g. webrtc:14844, to be fixed separately) which is why we have a DCHECK. But this DCHECK does not protect against accessing the invalid iterator if it is a release build. This CL makes that safe. Bug: chromium:1408392 Change-Id: I97a82786028e41c58ef8ef15002c3f959bbec7f1 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/291109 Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org> Commit-Queue: Henrik Boström <hbos@webrtc.org> Cr-Commit-Position: refs/heads/main@{#39159}
This commit is contained in:
parent
bf27f35a04
commit
124d7c3fe5
@ -2209,16 +2209,17 @@ void RTCStatsCollector::ProduceTransportStats_n(
|
|||||||
// exist.
|
// exist.
|
||||||
const auto& certificate_stats_it =
|
const auto& certificate_stats_it =
|
||||||
transport_cert_stats.find(transport_name);
|
transport_cert_stats.find(transport_name);
|
||||||
|
std::string local_certificate_id, remote_certificate_id;
|
||||||
RTC_DCHECK(certificate_stats_it != transport_cert_stats.cend());
|
RTC_DCHECK(certificate_stats_it != transport_cert_stats.cend());
|
||||||
std::string local_certificate_id;
|
if (certificate_stats_it != transport_cert_stats.cend()) {
|
||||||
if (certificate_stats_it->second.local) {
|
if (certificate_stats_it->second.local) {
|
||||||
local_certificate_id = RTCCertificateIDFromFingerprint(
|
local_certificate_id = RTCCertificateIDFromFingerprint(
|
||||||
certificate_stats_it->second.local->fingerprint);
|
certificate_stats_it->second.local->fingerprint);
|
||||||
}
|
}
|
||||||
std::string remote_certificate_id;
|
if (certificate_stats_it->second.remote) {
|
||||||
if (certificate_stats_it->second.remote) {
|
remote_certificate_id = RTCCertificateIDFromFingerprint(
|
||||||
remote_certificate_id = RTCCertificateIDFromFingerprint(
|
certificate_stats_it->second.remote->fingerprint);
|
||||||
certificate_stats_it->second.remote->fingerprint);
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// There is one transport stats for each channel.
|
// There is one transport stats for each channel.
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user