mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-02 19:16:15 +00:00
acl.c: Improve ast_ouraddrfor() diagnostic messages.
* Made not generate strings unless they will actually be used. ASTERISK-26672 Change-Id: I155fbe7fdff5ce47dfe5326f3baf5446849702c3
This commit is contained in:
36
main/acl.c
36
main/acl.c
@@ -912,40 +912,48 @@ int ast_get_ip(struct ast_sockaddr *addr, const char *hostname)
|
||||
|
||||
int ast_ouraddrfor(const struct ast_sockaddr *them, struct ast_sockaddr *us)
|
||||
{
|
||||
/*
|
||||
* We must create the errno string before creating the address
|
||||
* string because it could wipe out errno on the error return
|
||||
* paths.
|
||||
*/
|
||||
const char *sock_err;
|
||||
int port;
|
||||
int s;
|
||||
|
||||
/* Preserve our original address port */
|
||||
port = ast_sockaddr_port(us);
|
||||
|
||||
if ((s = socket(ast_sockaddr_is_ipv6(them) ? AF_INET6 : AF_INET,
|
||||
SOCK_DGRAM, 0)) < 0) {
|
||||
ast_log(LOG_ERROR, "Cannot create socket\n");
|
||||
s = socket(ast_sockaddr_is_ipv6(them) ? AF_INET6 : AF_INET, SOCK_DGRAM, 0);
|
||||
if (s < 0) {
|
||||
sock_err = ast_strdupa(strerror(errno));
|
||||
ast_log(LOG_ERROR, "Cannot create socket to %s: %s\n",
|
||||
ast_sockaddr_stringify_addr(them), sock_err);
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (ast_connect(s, them)) {
|
||||
ast_log(LOG_WARNING, "Cannot connect\n");
|
||||
sock_err = ast_strdupa(strerror(errno));
|
||||
ast_log(LOG_WARNING, "Cannot connect to %s: %s\n",
|
||||
ast_sockaddr_stringify_addr(them), sock_err);
|
||||
close(s);
|
||||
return -1;
|
||||
}
|
||||
if (ast_getsockname(s, us)) {
|
||||
|
||||
ast_log(LOG_WARNING, "Cannot get socket name\n");
|
||||
sock_err = ast_strdupa(strerror(errno));
|
||||
ast_log(LOG_WARNING, "Cannot get socket name for connection to %s: %s\n",
|
||||
ast_sockaddr_stringify_addr(them), sock_err);
|
||||
close(s);
|
||||
return -1;
|
||||
}
|
||||
close(s);
|
||||
|
||||
{
|
||||
const char *them_addr = ast_strdupa(ast_sockaddr_stringify_addr(them));
|
||||
const char *us_addr = ast_strdupa(ast_sockaddr_stringify_addr(us));
|
||||
|
||||
ast_debug(3, "For destination '%s', our source address is '%s'.\n",
|
||||
them_addr, us_addr);
|
||||
}
|
||||
|
||||
ast_sockaddr_set_port(us, port);
|
||||
|
||||
ast_debug(3, "For destination '%s', our source address is '%s'.\n",
|
||||
ast_strdupa(ast_sockaddr_stringify_addr(them)),
|
||||
ast_strdupa(ast_sockaddr_stringify_addr(us)));
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user