[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.
|
||||
const auto& certificate_stats_it =
|
||||
transport_cert_stats.find(transport_name);
|
||||
std::string local_certificate_id, remote_certificate_id;
|
||||
RTC_DCHECK(certificate_stats_it != transport_cert_stats.cend());
|
||||
std::string local_certificate_id;
|
||||
if (certificate_stats_it->second.local) {
|
||||
local_certificate_id = RTCCertificateIDFromFingerprint(
|
||||
certificate_stats_it->second.local->fingerprint);
|
||||
}
|
||||
std::string remote_certificate_id;
|
||||
if (certificate_stats_it->second.remote) {
|
||||
remote_certificate_id = RTCCertificateIDFromFingerprint(
|
||||
certificate_stats_it->second.remote->fingerprint);
|
||||
if (certificate_stats_it != transport_cert_stats.cend()) {
|
||||
if (certificate_stats_it->second.local) {
|
||||
local_certificate_id = RTCCertificateIDFromFingerprint(
|
||||
certificate_stats_it->second.local->fingerprint);
|
||||
}
|
||||
if (certificate_stats_it->second.remote) {
|
||||
remote_certificate_id = RTCCertificateIDFromFingerprint(
|
||||
certificate_stats_it->second.remote->fingerprint);
|
||||
}
|
||||
}
|
||||
|
||||
// There is one transport stats for each channel.
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user