diff --git a/src/sip/sipcall.cpp b/src/sip/sipcall.cpp index ff5859ae27864b34049a3929f67bfe0d64355183..77ef419fee081e3692d10c3047ef41535153a977 100644 --- a/src/sip/sipcall.cpp +++ b/src/sip/sipcall.cpp @@ -964,23 +964,29 @@ std::map<std::string, std::string> SIPCall::getDetails() const { auto details = Call::getDetails(); - details.emplace(DRing::Call::Details::PEER_HOLDING, peerHolding_ ? TRUE_STR : FALSE_STR); + details.emplace(DRing::Call::Details::PEER_HOLDING, + peerHolding_ ? TRUE_STR : FALSE_STR); if (transport_ and transport_->isSecure()) { const auto& tlsInfos = transport_->getTlsInfos(); - auto cipher = pj_ssl_cipher_name(tlsInfos.cipher); - if (tlsInfos.cipher and not cipher) - RING_WARN("Unknown cipher: %d", tlsInfos.cipher); - details.emplace(DRing::TlsTransport::TLS_CIPHER, cipher ? cipher : ""); - details.emplace(DRing::TlsTransport::TLS_PEER_CERT, tlsInfos.peerCert->toString()); - auto ca = tlsInfos.peerCert->issuer; - unsigned n = 0; - while (ca) { - std::ostringstream name_str; - name_str << DRing::TlsTransport::TLS_PEER_CA_ << n++; - details.emplace(name_str.str(), ca->toString()); - ca = ca->issuer; + const auto& cipher = pj_ssl_cipher_name(tlsInfos.cipher); + details.emplace(DRing::TlsTransport::TLS_CIPHER, cipher ? cipher : ""); + if (tlsInfos.peerCert) { + details.emplace(DRing::TlsTransport::TLS_PEER_CERT, + tlsInfos.peerCert->toString()); + auto ca = tlsInfos.peerCert->issuer; + unsigned n = 0; + while (ca) { + std::ostringstream name_str; + name_str << DRing::TlsTransport::TLS_PEER_CA_ << n++; + details.emplace(name_str.str(), ca->toString()); + ca = ca->issuer; + } + details.emplace(DRing::TlsTransport::TLS_PEER_CA_NUM, + std::to_string(n)); + } else { + details.emplace(DRing::TlsTransport::TLS_PEER_CERT, ""); + details.emplace(DRing::TlsTransport::TLS_PEER_CA_NUM, ""); } - details.emplace(DRing::TlsTransport::TLS_PEER_CA_NUM, std::to_string(n)); } return details; }