From e84480e373875d189847567be741a0091d52a5db Mon Sep 17 00:00:00 2001 From: Liong Sauw Ming Date: Wed, 11 Jan 2017 11:13:57 +0000 Subject: Re #1960: Use boolean field to indicate whether the info is empty (instead of relying on bzero and memcmp) git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@5522 74dad513-b988-da41-8d7b-12977e46ad98 --- pjsip/include/pjsua2/endpoint.hpp | 11 +++++++++++ pjsip/src/pjsua2/endpoint.cpp | 20 ++++++++++---------- 2 files changed, 21 insertions(+), 10 deletions(-) diff --git a/pjsip/include/pjsua2/endpoint.hpp b/pjsip/include/pjsua2/endpoint.hpp index da777868..d9f10959 100644 --- a/pjsip/include/pjsua2/endpoint.hpp +++ b/pjsip/include/pjsua2/endpoint.hpp @@ -163,6 +163,11 @@ struct SslCertInfo for remote certificate */ public: + /** + * Constructor. + */ + SslCertInfo(); + /** * Check if the info is set with empty values. * @@ -174,6 +179,9 @@ public: * Convert from pjsip */ void fromPj(const pj_ssl_cert_info &info); + +private: + bool empty; }; /** @@ -255,6 +263,9 @@ public: * Convert from pjsip */ void fromPj(const pjsip_tls_state_info &info); + +private: + bool empty; }; /** diff --git a/pjsip/src/pjsua2/endpoint.cpp b/pjsip/src/pjsua2/endpoint.cpp index 163e292f..eff73fdd 100644 --- a/pjsip/src/pjsua2/endpoint.cpp +++ b/pjsip/src/pjsua2/endpoint.cpp @@ -45,16 +45,13 @@ Endpoint *Endpoint::instance_; /////////////////////////////////////////////////////////////////////////////// TlsInfo::TlsInfo() + : empty(true) { - pj_bzero(this, sizeof(TlsInfo)); } bool TlsInfo::isEmpty() const { - TlsInfo dummy; - - pj_bzero(&dummy, sizeof(dummy)); - return ((pj_memcmp(this, &dummy, sizeof(dummy)) == 0)? true: false); + return empty; } void TlsInfo::fromPj(const pjsip_tls_state_info &info) @@ -65,6 +62,7 @@ void TlsInfo::fromPj(const pjsip_tls_state_info &info) const char *verif_msgs[32]; unsigned verif_msg_cnt; + empty = false; established = PJ2BOOL(ssock_info->established); protocol = ssock_info->proto; cipher = ssock_info->cipher; @@ -89,16 +87,19 @@ void TlsInfo::fromPj(const pjsip_tls_state_info &info) #endif } -bool SslCertInfo::isEmpty() const +SslCertInfo::SslCertInfo() + : empty(true) { - SslCertInfo dummy; +} - pj_bzero(&dummy, sizeof(dummy)); - return ((pj_memcmp(this, &dummy, sizeof(dummy)) == 0)? true: false); +bool SslCertInfo::isEmpty() const +{ + return empty; } void SslCertInfo::fromPj(const pj_ssl_cert_info &info) { + empty = false; version = info.version; pj_memcpy(serialNo, info.serial_no, sizeof(info.serial_no)); subjectCn = pj2Str(info.subject.cn); @@ -637,7 +638,6 @@ void Endpoint::on_transport_state( pjsip_transport *tp, prm.type = tp->type_name; prm.state = state; prm.lastError = info ? info->status : PJ_SUCCESS; - pj_bzero(&prm.tlsInfo, sizeof(TlsInfo)); #if defined(PJSIP_HAS_TLS_TRANSPORT) && PJSIP_HAS_TLS_TRANSPORT!=0 if (!pj_ansi_stricmp(tp->type_name, "tls") && info->ext_info && -- cgit v1.2.3