sipvoiplink: don't throw if resolver creation fails

Using pjsip' resolver is optional: pjsip fallbacks
to gethostbyname():
http://www.pjsip.org/pjsip/docs/html/group__PJSIP__ENDPT.htm#gaa783363fa5b0d6d1fd081bfd40d4314b
Also the DNS resolver is only useful for SIP.

If pj_dns_resolver creation fails for some reason,
print an error message and continue, instead of
preventing the SIPVoIPLink instance to be created and
prevent proper initialization of Ring.

Change-Id: I92e27d53f3fd094322e923a9e418de6cda14b945
This commit is contained in:
Adrien Beraud
2017-06-27 19:24:31 +02:00
committed by Adrien Béraud
parent e874328a53
commit 9da97f19fb

View File

@ -502,9 +502,17 @@ SIPVoIPLink::SIPVoIPLink() : pool_(nullptr, pj_pool_release)
pj_strdup2(pool_.get(), &dns_nameservers[i], hbuf);
}
pj_dns_resolver* resv;
TRY(pjsip_endpt_create_resolver(endpt_, &resv));
TRY(pj_dns_resolver_set_ns(resv, ns.size(), dns_nameservers.data(), nullptr));
TRY(pjsip_endpt_set_resolver(endpt_, resv));
if (auto ret = pjsip_endpt_create_resolver(endpt_, &resv)) {
RING_WARN("Error creating SIP DNS resolver: %s", sip_utils::sip_strerror(ret).c_str());
} else {
if (auto ret = pj_dns_resolver_set_ns(resv, ns.size(), dns_nameservers.data(), nullptr)) {
RING_WARN("Error setting SIP DNS servers: %s", sip_utils::sip_strerror(ret).c_str());
} else {
if (auto ret = pjsip_endpt_set_resolver(endpt_, resv)) {
RING_WARN("Error setting pjsip DNS resolver: %s", sip_utils::sip_strerror(ret).c_str());
}
}
}
}
sipTransportBroker.reset(new SipTransportBroker(endpt_, cp_, *pool_));