Fix URI handler when calling without a sip address.

This commit is contained in:
Julien Wadel 2022-10-15 00:15:29 +02:00
parent 2d6026b73b
commit 55a425af3a
2 changed files with 11 additions and 3 deletions

View file

@ -95,9 +95,9 @@ void CallsListModel::launchAudioCall (const QString &sipAddress, const QString&
CoreManager::getInstance()->getTimelineListModel()->mAutoSelectAfterCreation = true;
shared_ptr<linphone::Core> core = CoreManager::getInstance()->getCore();
shared_ptr<linphone::Address> address = core->interpretUrl(Utils::appStringToCoreString(sipAddress));
shared_ptr<linphone::Address> address = Utils::interpretUrl(sipAddress);
if (!address){
qCritical() << "The calling address is not a SIP address : " << sipAddress;
qCritical() << "The calling address is not an interpretable SIP address: " << sipAddress;
return;
}

View file

@ -46,7 +46,15 @@ constexpr int SafeFilePathLimit = 100;
}
std::shared_ptr<linphone::Address> Utils::interpretUrl(const QString& address){
return CoreManager::getInstance()->getCore()->interpretUrl(Utils::appStringToCoreString(address));
auto interpretedAddress = CoreManager::getInstance()->getCore()->interpretUrl(Utils::appStringToCoreString(address), true);
if(!interpretedAddress){// Try by removing scheme.
QStringList splitted = address.split(":");
if(splitted.size() > 0 && splitted[0] == "sip"){
splitted.removeFirst();
interpretedAddress = CoreManager::getInstance()->getCore()->interpretUrl(Utils::appStringToCoreString(splitted.join(":")), true);
}
}
return interpretedAddress;
}
char *Utils::rstrstr (const char *a, const char *b) {
size_t a_len = strlen(a);