From 9da97f19fb23b74a4e5b860d759af490bfbebee3 Mon Sep 17 00:00:00 2001 From: Adrien Beraud <adrien.beraud@savoirfairelinux.com> Date: Tue, 27 Jun 2017 19:24:31 +0200 Subject: [PATCH] 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 --- src/sip/sipvoiplink.cpp | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/sip/sipvoiplink.cpp b/src/sip/sipvoiplink.cpp index 1704ad0d26..02b61be52c 100644 --- a/src/sip/sipvoiplink.cpp +++ b/src/sip/sipvoiplink.cpp @@ -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_)); -- GitLab