From cea2ad8d515a59c0cfa15c3787bebc66f9a569e2 Mon Sep 17 00:00:00 2001
From: Ming Rui Zhang <mingrui.zhang@savoirfairelinux.com>
Date: Mon, 22 Feb 2021 10:29:03 -0500
Subject: [PATCH] sip: use outbound proxy to resolve server name whenever
 available

Gitlab: #346

Change-Id: Ia7b37abf31a14e8648f61a2415687d2400aa9937
---
 src/sip/sipaccount.cpp | 17 +++--------------
 1 file changed, 3 insertions(+), 14 deletions(-)

diff --git a/src/sip/sipaccount.cpp b/src/sip/sipaccount.cpp
index b5b4beec1d..75a9ac442a 100644
--- a/src/sip/sipaccount.cpp
+++ b/src/sip/sipaccount.cpp
@@ -1,4 +1,4 @@
-/*
+/*
  *  Copyright (C) 2004-2021 Savoir-faire Linux Inc.
  *
  *  Author: Emmanuel Milou <emmanuel.milou@savoirfairelinux.com>
@@ -812,7 +812,7 @@ SIPAccount::doRegister1_()
         }
     }
 
-    link_.resolveSrvName(hostname_,
+    link_.resolveSrvName(hasServiceRoute() ? getServiceRoute() : hostname_,
                          tlsEnable_ ? PJSIP_TRANSPORT_TLS : PJSIP_TRANSPORT_UDP,
                          [w = weak()](std::vector<IpAddr> host_ips) {
                              if (auto acc = w.lock()) {
@@ -1107,18 +1107,7 @@ SIPAccount::sendRegister()
 void
 SIPAccount::setUpTransmissionData(pjsip_tx_data* tdata, long transportKeyType)
 {
-    if (hasServiceRoute()) {
-        IpAddr proxyServer {getServiceRoute()};
-        if (proxyServer.getPort() == 0)
-            proxyServer.setPort(sip_utils::DEFAULT_SIP_PORT);
-        auto ai = &tdata->dest_info;
-        ai->name = pj_strdup3(tdata->pool, hostname_.c_str());
-        ai->addr.count = 1;
-        ai->addr.entry[0].type = (pjsip_transport_type_e) transportKeyType;
-        pj_memcpy(&ai->addr.entry[0].addr, proxyServer.pjPtr(), sizeof(pj_sockaddr));
-        ai->addr.entry[0].addr_len = proxyServer.getLength();
-        ai->cur_addr = 0;
-    } else if (hostIp_) {
+    if (hostIp_) {
         auto ai = &tdata->dest_info;
         ai->name = pj_strdup3(tdata->pool, hostname_.c_str());
         ai->addr.count = 1;
-- 
GitLab