diff --git a/assets/linphone.desktop b/assets/linphone.desktop
index 98e74659d..663c8d701 100644
--- a/assets/linphone.desktop
+++ b/assets/linphone.desktop
@@ -7,7 +7,7 @@ Exec=linphone %u
Icon=linphone
Terminal=false
Categories=Network;Telephony;
-MimeType=x-scheme-handler/sip-linphone;x-scheme-handler/sip;
+MimeType=x-scheme-handler/sip-linphone;x-scheme-handler/sip;x-scheme-handler/sips-linphone;x-scheme-handler/sips;
# Translations
diff --git a/cmake_builder/linphone_package/Info.plist.in b/cmake_builder/linphone_package/Info.plist.in
index 4ad36963b..bcb50b2a3 100644
--- a/cmake_builder/linphone_package/Info.plist.in
+++ b/cmake_builder/linphone_package/Info.plist.in
@@ -41,6 +41,8 @@
sip
sip-linphone
+ sips
+ sips-linphone
diff --git a/cmake_builder/linphone_package/uninstall.nsi b/cmake_builder/linphone_package/uninstall.nsi
index 84a21ede6..4ac26f09d 100644
--- a/cmake_builder/linphone_package/uninstall.nsi
+++ b/cmake_builder/linphone_package/uninstall.nsi
@@ -7,3 +7,5 @@ notRunningInUninstall:
DeleteRegKey HKCR "sip"
DeleteRegKey HKCR "sip-linphone"
+DeleteRegKey HKCR "sips"
+DeleteRegKey HKCR "sips-linphone"
diff --git a/cmake_builder/linphone_package/uri-handler-install.nsi.in b/cmake_builder/linphone_package/uri-handler-install.nsi.in
index 871a8de96..288e5f65c 100644
--- a/cmake_builder/linphone_package/uri-handler-install.nsi.in
+++ b/cmake_builder/linphone_package/uri-handler-install.nsi.in
@@ -10,4 +10,18 @@ WriteRegStr HKCR "sip-linphone" "URL Protocol" ""
WriteRegExpandStr HKCR "sip-linphone\DefaultIcon" "" "@LINPHONE_DESKTOP_DIR@/assets/linphone.ico,1"
WriteRegStr HKCR "sip-linphone\shell" "" "open"
WriteRegStr HKCR "sip-linphone\shell\open" "" "command"
-WriteRegStr HKCR "sip-linphone\shell\open\command" "" "$INSTDIR\bin\linphone.exe $\"%1$\""
\ No newline at end of file
+WriteRegStr HKCR "sip-linphone\shell\open\command" "" "$INSTDIR\bin\linphone.exe $\"%1$\""
+
+WriteRegStr HKCR "sips" "" "URL:sips Protocol"
+WriteRegStr HKCR "sips" "URL Protocol" ""
+WriteRegExpandStr HKCR "sips\DefaultIcon" "" "@LINPHONE_DESKTOP_DIR@/assets/linphone.ico,1"
+WriteRegStr HKCR "sips\shell" "" "open"
+WriteRegStr HKCR "sips\shell\open" "" "command"
+WriteRegStr HKCR "sips\shell\open\command" "" "$INSTDIR\bin\linphone.exe $\"%1$\""
+
+WriteRegStr HKCR "sips-linphone" "" "URL:sips-linphone Protocol"
+WriteRegStr HKCR "sips-linphone" "URL Protocol" ""
+WriteRegExpandStr HKCR "sips-linphone\DefaultIcon" "" "@LINPHONE_DESKTOP_DIR@/assets/linphone.ico,1"
+WriteRegStr HKCR "sips-linphone\shell" "" "open"
+WriteRegStr HKCR "sips-linphone\shell\open" "" "command"
+WriteRegStr HKCR "sips-linphone\shell\open\command" "" "$INSTDIR\bin\linphone.exe $\"%1$\""
\ No newline at end of file
diff --git a/src/app/cli/Cli.cpp b/src/app/cli/Cli.cpp
index 2d201f741..9a8d12ddb 100644
--- a/src/app/cli/Cli.cpp
+++ b/src/app/cli/Cli.cpp
@@ -334,8 +334,8 @@ QMap Cli::mCommands = {
void Cli::executeCommand (const QString &command, CommandFormat *format) {
shared_ptr address = linphone::Factory::get()->createAddress(
- ::Utils::appStringToCoreString(command)
- );
+ ::Utils::appStringToCoreString(command)
+ );
// Execute cli command.
if (!address) {
@@ -358,11 +358,14 @@ void Cli::executeCommand (const QString &command, CommandFormat *format) {
qInfo() << QStringLiteral("Execute uri command: `%1`.").arg(command);
string scheme = address->getScheme();
- if (scheme != "sip" && scheme != "sip-linphone") {
- qWarning() << QStringLiteral("Not a valid uri: `%1`.").arg(command);
- return;
- }
+ for (const string &validScheme : { "sip", "sip-linphone", "sips", "sips-linphone" })
+ if (scheme == validScheme)
+ goto success;
+ qWarning() << QStringLiteral("Not a valid uri: `%1` Unsupported scheme: `%2`.")
+ .arg(command).arg(::Utils::coreStringToAppString(scheme));
+ return;
+success:
const QString functionName = ::Utils::coreStringToAppString(address->getHeader("method")).isEmpty()
? QStringLiteral("call")
: ::Utils::coreStringToAppString(address->getHeader("method"));