From 76c4e7ed259e7ba10b48f777361ad32b325bf2d9 Mon Sep 17 00:00:00 2001 From: Ghislain MARY Date: Mon, 20 Nov 2017 16:47:36 +0100 Subject: [PATCH] Handle IdentityAddress with sips scheme. --- src/address/address.cpp | 2 +- src/address/identity-address-p.h | 1 + src/address/identity-address.cpp | 11 ++++++++++- src/address/identity-address.h | 2 ++ 4 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/address/address.cpp b/src/address/address.cpp index 75d38cab3..7c562f198 100644 --- a/src/address/address.cpp +++ b/src/address/address.cpp @@ -48,7 +48,7 @@ Address::Address (const Address &src) : ClonableObject(*new AddressPrivate) { Address::Address (const IdentityAddress &src) : ClonableObject(*new AddressPrivate) { L_D(); - string uri = "sip:" + src.getUsername() + "@"; + string uri = src.getScheme() + ":" + src.getUsername() + "@"; if (src.getDomain().find(':') != string::npos) uri += "[" + src.getDomain() + "]"; else diff --git a/src/address/identity-address-p.h b/src/address/identity-address-p.h index b570fccc9..f8f27294a 100644 --- a/src/address/identity-address-p.h +++ b/src/address/identity-address-p.h @@ -29,6 +29,7 @@ LINPHONE_BEGIN_NAMESPACE class IdentityAddressPrivate : public ClonableObjectPrivate { private: + std::string scheme; std::string username; std::string domain; std::string gruu; diff --git a/src/address/identity-address.cpp b/src/address/identity-address.cpp index 8ce4b059b..45c2d9383 100644 --- a/src/address/identity-address.cpp +++ b/src/address/identity-address.cpp @@ -34,7 +34,8 @@ LINPHONE_BEGIN_NAMESPACE IdentityAddress::IdentityAddress (const string &address) : ClonableObject(*new IdentityAddressPrivate) { L_D(); Address tmpAddress(address); - if (tmpAddress.isValid() && (tmpAddress.getScheme() == "sip")) { + if (tmpAddress.isValid() && ((tmpAddress.getScheme() == "sip") || (tmpAddress.getScheme() == "sips"))) { + d->scheme = tmpAddress.getScheme(); d->username = tmpAddress.getUsername(); d->domain = tmpAddress.getDomain(); if (tmpAddress.hasUriParam("gr")) { @@ -45,6 +46,7 @@ IdentityAddress::IdentityAddress (const string &address) : ClonableObject(*new I IdentityAddress::IdentityAddress (const IdentityAddress &src) : ClonableObject(*new IdentityAddressPrivate) { L_D(); + d->scheme = src.getScheme(); d->username = src.getUsername(); d->domain = src.getDomain(); d->gruu = src.getGruu(); @@ -52,6 +54,7 @@ IdentityAddress::IdentityAddress (const IdentityAddress &src) : ClonableObject(* IdentityAddress::IdentityAddress (const Address &src) : ClonableObject(*new IdentityAddressPrivate) { L_D(); + d->scheme = src.getScheme(); d->username = src.getUsername(); d->domain = src.getDomain(); if (src.hasUriParam("gr")) { @@ -62,6 +65,7 @@ IdentityAddress::IdentityAddress (const Address &src) : ClonableObject(*new Iden IdentityAddress &IdentityAddress::operator= (const IdentityAddress &src) { L_D(); if (this != &src) { + d->scheme = src.getScheme(); d->username = src.getUsername(); d->domain = src.getDomain(); d->gruu = src.getGruu(); @@ -86,6 +90,11 @@ bool IdentityAddress::isValid () const { return tmpAddress.isValid(); } +const string &IdentityAddress::getScheme () const { + L_D(); + return d->scheme; +} + const string &IdentityAddress::getUsername () const { L_D(); return d->username; diff --git a/src/address/identity-address.h b/src/address/identity-address.h index b99e03513..5587bb0c1 100644 --- a/src/address/identity-address.h +++ b/src/address/identity-address.h @@ -45,6 +45,8 @@ public: bool isValid () const; + const std::string &getScheme () const; + const std::string &getUsername () const; bool setUsername (const std::string &username);