diff --git a/src/manager.cpp b/src/manager.cpp
index 04f4952856e488a7d9e9bf4e8251deb61976583b..a99ee2001574e69e7bbfc0a2834d20d552fc6094 100644
--- a/src/manager.cpp
+++ b/src/manager.cpp
@@ -762,6 +762,13 @@ Manager::init(const std::string &config_file)
         no_errors = false;
     }
 
+    // Some VoIP services support SIP/TLS and SRTP, but do not set the
+    // correct schema in the INVITE request. For more details, see:
+    // https://trac.pjsip.org/repos/ticket/1735
+    if (voipPreferences.getDisableSecureDlgCheck()) {
+        pjsip_cfg()->endpt.disable_secure_dlg_check = PJ_TRUE;
+    }
+
     // always back up last error-free configuration
     if (no_errors) {
         make_backup(pimpl_->path_);
diff --git a/src/preferences.cpp b/src/preferences.cpp
index 86367c22dd3cc9b6a41708e67da9d58f185e21bf..686e3c0ff0873d6dd1b2730af77ce5732b1c2023 100644
--- a/src/preferences.cpp
+++ b/src/preferences.cpp
@@ -92,6 +92,7 @@ static constexpr const char* MD5_HASH_KEY {"md5Hash"};
 
 // voip preferences
 constexpr const char * const VoipPreference::CONFIG_LABEL;
+static constexpr const char* DISABLE_SECURE_DLG_CHECK_KEY {"disableSecureDlgCheck"};
 static constexpr const char* PLAY_DTMF_KEY {"playDtmf"};
 static constexpr const char* PLAY_TONES_KEY {"playTones"};
 static constexpr const char* PULSE_LENGTH_KEY {"pulseLength"};
@@ -240,7 +241,8 @@ void Preferences::unserialize(const YAML::Node &in)
 }
 
 VoipPreference::VoipPreference() :
-    playDtmf_(true)
+    disableSecureDlgCheck_(false)
+    , playDtmf_(true)
     , playTones_(true)
     , pulseLength_(PULSE_LENGTH_DEFAULT)
     , symmetricRtp_(true)
@@ -249,6 +251,7 @@ VoipPreference::VoipPreference() :
 void VoipPreference::serialize(YAML::Emitter &out) const
 {
     out << YAML::Key << CONFIG_LABEL << YAML::Value << YAML::BeginMap;
+    out << YAML::Key << DISABLE_SECURE_DLG_CHECK_KEY << YAML::Value << disableSecureDlgCheck_;
     out << YAML::Key << PLAY_DTMF_KEY << YAML::Value << playDtmf_;
     out << YAML::Key << PLAY_TONES_KEY << YAML::Value << playTones_;
     out << YAML::Key << PULSE_LENGTH_KEY << YAML::Value << pulseLength_;
@@ -260,6 +263,7 @@ void VoipPreference::serialize(YAML::Emitter &out) const
 void VoipPreference::unserialize(const YAML::Node &in)
 {
     const auto &node = in[CONFIG_LABEL];
+    parseValue(node, DISABLE_SECURE_DLG_CHECK_KEY, disableSecureDlgCheck_);
     parseValue(node, PLAY_DTMF_KEY, playDtmf_);
     parseValue(node, PLAY_TONES_KEY, playTones_);
     parseValue(node, PULSE_LENGTH_KEY, pulseLength_);
diff --git a/src/preferences.h b/src/preferences.h
index f78c81c4f7a948599f2e60bcfd49b219b080ca2a..90511764e9192c2810ef4d3d2135e425e4b14469 100644
--- a/src/preferences.h
+++ b/src/preferences.h
@@ -146,6 +146,13 @@ class VoipPreference : public Serializable {
         void serialize(YAML::Emitter &out) const override;
         void unserialize(const YAML::Node &in) override;
 
+        bool getDisableSecureDlgCheck() const {
+            return disableSecureDlgCheck_;
+        }
+        void setDisableSecureDlgCheck(bool disable) {
+            disableSecureDlgCheck_ = disable;
+        }
+
         bool getPlayDtmf() const {
             return playDtmf_;
         }
@@ -185,6 +192,7 @@ class VoipPreference : public Serializable {
         }
 
     private:
+        bool disableSecureDlgCheck_;
         bool playDtmf_;
         bool playTones_;
         int pulseLength_;