diff --git a/sflphone-common/src/managerimpl.cpp b/sflphone-common/src/managerimpl.cpp index a2a2f17f74ede9422f5eed090f6588fe094e5d1b..c97310af27cedc02fae385a230022acf4db545c5 100644 --- a/sflphone-common/src/managerimpl.cpp +++ b/sflphone-common/src/managerimpl.cpp @@ -1545,8 +1545,11 @@ ManagerImpl::initRegisterAccounts() while (iter != _accountMap.end()) { if (iter->second) { iter->second->loadConfig(); - /* If the account is set as enabled, try to register */ + // TODO: take off this protection by storing localIPAddress using interface name + setConfig(iter->second->getAccountID(), LOCAL_ADDRESS, "0.0.0.0"); + + /* If the account is set as enabled, try to register */ if (iter->second->isEnabled()) { status = iter->second->registerVoIPLink(); diff --git a/sflphone-common/src/sip/sipaccount.cpp b/sflphone-common/src/sip/sipaccount.cpp index ac9428f0ca7cd5ff698e6e9da73219278c214d51..52f7c3a0dfc1aecb99d237f4fe97a74a7c8f7ddd 100644 --- a/sflphone-common/src/sip/sipaccount.cpp +++ b/sflphone-common/src/sip/sipaccount.cpp @@ -338,8 +338,8 @@ void SIPAccount::loadConfig() // Do not store or use IP address in config as this address may change // Use loadSIPLocalIP for now instead in register/unregister (UDP,STUN,TLS), newOutGoingCall, mod_on_rx_request // TODO: if we realy have to bind to a specific interface, store interfaces by name instead - setLocalAddress (std::string("0.0.0.0")); - // setLocalAddress (Manager::instance().getConfigString (_accountID, LOCAL_ADDRESS)); + // setLocalAddress (std::string("0.0.0.0")); + setLocalAddress (Manager::instance().getConfigString (_accountID, LOCAL_ADDRESS)); // Published parameters diff --git a/sflphone-common/src/sip/sipvoiplink.cpp b/sflphone-common/src/sip/sipvoiplink.cpp index 2acd4ca5ff382a59d73f1622edf15a2ce1b4cbf8..a712ae4636fecf6640ea14b5fa19f1b432a72923 100644 --- a/sflphone-common/src/sip/sipvoiplink.cpp +++ b/sflphone-common/src/sip/sipvoiplink.cpp @@ -1644,13 +1644,16 @@ pj_status_t SIPVoIPLink::enable_dns_srv_resolver (pjsip_endpoint *endpt, pj_dns_ } if (!get_dns_server_addresses (&dns_servers)) { - _debug ("Error while fetching DNS information\n"); + _debug ("Error while fetching DNS information\n"); return -1; } // Build the nameservers list needed by pjsip - scount = dns_servers.size (); - + if ((scount = dns_servers.size ()) <= 0) { + _debug("No server detected while fetching DNS information, stop dns resolution\n"); + return 0; + } + pj_str_t nameservers[scount]; for (i = 0; i<scount; i++) { @@ -1967,8 +1970,8 @@ int SIPVoIPLink::createUDPServer (AccountID id) } else { // We are trying to initialize a UDP transport available for all local accounts and direct IP calls if (account->getLocalAddress () != "0.0.0.0") { - listeningAddress = account->getLocalAddress (); - } + listeningAddress = account->getLocalAddress (); + } listeningPort = account->getLocalPort (); } @@ -2029,8 +2032,9 @@ int SIPVoIPLink::createUDPServer (AccountID id) if (account == NULL) _localUDPTransport = transport; - else - account->setAccountTransport (transport); + else { + account->setAccountTransport (transport); + } } _debug ("Transport initialized successfully on %s:%i\n", listeningAddress.c_str (), listeningPort);