mirror of
https://github.com/asterisk/asterisk.git
synced 2025-10-28 23:15:59 +00:00
Prevent outbound SIP NOTIFY packets from displaying a port of 0
In the change from 1.6.2 to 1.8, ast_sockaddr was introduced which changed the behavior of ast_find_ourip such that port number was wiped out. This caused the port in internip (which is used for Contact and Call-ID on NOTIFYs) to be 0. This change causes ast_find_ourip to be port-preserving again. (closes issue ASTERISK-19430) ........ Merged revisions 357665 from http://svn.asterisk.org/svn/asterisk/branches/1.8 git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8-digiumphones@358692 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -737,6 +737,7 @@ int ast_find_ourip(struct ast_sockaddr *ourip, const struct ast_sockaddr *bindad
|
|||||||
{
|
{
|
||||||
char ourhost[MAXHOSTNAMELEN] = "";
|
char ourhost[MAXHOSTNAMELEN] = "";
|
||||||
struct ast_sockaddr root;
|
struct ast_sockaddr root;
|
||||||
|
int res, port = ast_sockaddr_port(ourip);
|
||||||
|
|
||||||
/* just use the bind address if it is nonzero */
|
/* just use the bind address if it is nonzero */
|
||||||
if (!ast_sockaddr_is_any(bindaddr)) {
|
if (!ast_sockaddr_is_any(bindaddr)) {
|
||||||
@@ -749,6 +750,8 @@ int ast_find_ourip(struct ast_sockaddr *ourip, const struct ast_sockaddr *bindad
|
|||||||
ast_log(LOG_WARNING, "Unable to get hostname\n");
|
ast_log(LOG_WARNING, "Unable to get hostname\n");
|
||||||
} else {
|
} else {
|
||||||
if (resolve_first(ourip, ourhost, PARSE_PORT_FORBID, family) == 0) {
|
if (resolve_first(ourip, ourhost, PARSE_PORT_FORBID, family) == 0) {
|
||||||
|
/* reset port since resolve_first wipes this out */
|
||||||
|
ast_sockaddr_set_port(ourip, port);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -756,8 +759,12 @@ int ast_find_ourip(struct ast_sockaddr *ourip, const struct ast_sockaddr *bindad
|
|||||||
/* A.ROOT-SERVERS.NET. */
|
/* A.ROOT-SERVERS.NET. */
|
||||||
if (!resolve_first(&root, "A.ROOT-SERVERS.NET", PARSE_PORT_FORBID, 0) &&
|
if (!resolve_first(&root, "A.ROOT-SERVERS.NET", PARSE_PORT_FORBID, 0) &&
|
||||||
!ast_ouraddrfor(&root, ourip)) {
|
!ast_ouraddrfor(&root, ourip)) {
|
||||||
|
/* reset port since resolve_first wipes this out */
|
||||||
|
ast_sockaddr_set_port(ourip, port);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
return get_local_address(ourip);
|
res = get_local_address(ourip);
|
||||||
|
ast_sockaddr_set_port(ourip, port);
|
||||||
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user