mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-22 13:25:17 +00:00
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
This commit is contained in:
@@ -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);
|
||||
|
Reference in New Issue
Block a user