diff --git a/src/ringdht/ringaccount.cpp b/src/ringdht/ringaccount.cpp index e8af3b5a019b3a8a06cf435c75739ee5200d2cd5..4ec86f97ebab5b0ba17d70c036e470bcf9e5be92 100644 --- a/src/ringdht/ringaccount.cpp +++ b/src/ringdht/ringaccount.cpp @@ -2871,23 +2871,22 @@ RingAccount::getToUri(const std::string& to) const pj_str_t RingAccount::getContactHeader(pjsip_transport* t) { + std::string quotedDisplayName = "\"" + displayName_ + "\" " + (displayName_.empty() ? "" : " "); if (t) { // FIXME: be sure that given transport is from SipIceTransport auto tlsTr = reinterpret_cast<tls::SipsIceTransport::TransportData*>(t)->self; auto address = tlsTr->getLocalAddress().toString(true); contact_.slen = pj_ansi_snprintf(contact_.ptr, PJSIP_MAX_URL_SIZE, - "%s%s<sips:%s%s%s;transport=dtls>", - displayName_.c_str(), - (displayName_.empty() ? "" : " "), + "%s<sips:%s%s%s;transport=dtls>", + quotedDisplayName.c_str(), identity_.second->getId().toString().c_str(), (address.empty() ? "" : "@"), address.c_str()); } else { RING_ERR("getContactHeader: no SIP transport provided"); contact_.slen = pj_ansi_snprintf(contact_.ptr, PJSIP_MAX_URL_SIZE, - "%s%s<sips:%s@ring.dht>", - displayName_.c_str(), - (displayName_.empty() ? "" : " "), + "%s<sips:%s@ring.dht>", + quotedDisplayName.c_str(), identity_.second->getId().toString().c_str()); } return contact_; diff --git a/src/sip/sipaccount.cpp b/src/sip/sipaccount.cpp index 2c8e2d81660c06bdedc66f20b95fc759e1f03627..fbb52c2a4de0fb373b39e282f174ac8b9d4581c4 100644 --- a/src/sip/sipaccount.cpp +++ b/src/sip/sipaccount.cpp @@ -1461,10 +1461,10 @@ SIPAccount::getContactHeader(pjsip_transport* t) transport = ";transport=tls"; } + std::string quotedDisplayName = "\"" + displayName_ + "\" " + (displayName_.empty() ? "" : " "); contact_.slen = pj_ansi_snprintf(contact_.ptr, PJSIP_MAX_URL_SIZE, - "%s%s<%s:%s%s%s:%d%s>", - displayName_.c_str(), - (displayName_.empty() ? "" : " "), + "%s<%s:%s%s%s:%d%s>", + quotedDisplayName.c_str(), scheme, username_.c_str(), (username_.empty() ? "" : "@"),