Skip to content
Snippets Groups Projects
Commit 8a65f47e authored by Walter Doekes's avatar Walter Doekes
Browse files

Don't do SIP contact/route DNS if we're not using the result.

In many cases (for peers behind NAT or for TCP sockets) we do not need
to look up any hostname in the Contact (or Route) when sending an
in-dialog request. This should reduce netsock2.c: getaddrinfo errors in
certain scenarios.

Review: https://reviewboard.asterisk.org/r/2156


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@375110 65c4cc65-6c06-0410-ace0-fbb531ad65f3
parent b2f9542f
No related branches found
No related tags found
No related merge requests found
......@@ -11811,7 +11811,16 @@ static int reqprep(struct sip_request *req, struct sip_pvt *p, int sipmethod, ui
if (p->route &&
!(sipmethod == SIP_CANCEL ||
(sipmethod == SIP_ACK && (p->invitestate == INV_COMPLETED || p->invitestate == INV_CANCELLED)))) {
set_destination(p, p->route->hop);
if (p->socket.type != SIP_TRANSPORT_UDP && p->socket.tcptls_session) {
/* For TCP/TLS sockets that are connected we won't need
* to do any hostname/IP lookups */
} else if (ast_test_flag(&p->flags[0], SIP_NAT_FORCE_RPORT)) {
/* For NATed traffic, we ignore the contact/route and
* simply send to the received-from address. No need
* for lookups. */
} else {
set_destination(p, p->route->hop);
}
add_route(req, is_strict ? p->route->next : p->route);
}
add_max_forwards(p, req);
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment