diff options
-rw-r--r-- | channels/chan_iax2.c | 5 | ||||
-rw-r--r-- | main/netsock.c | 5 |
2 files changed, 7 insertions, 3 deletions
diff --git a/channels/chan_iax2.c b/channels/chan_iax2.c index 24f49d8bf..fab2752c7 100644 --- a/channels/chan_iax2.c +++ b/channels/chan_iax2.c @@ -12270,7 +12270,7 @@ static int check_srcaddr(struct ast_sockaddr *addr) { int sd; - sd = socket(ast_sockaddr_is_ipv4(addr) ? AF_INET : AF_INET6, SOCK_DGRAM, 0); + sd = socket(addr->ss.ss_family, SOCK_DGRAM, 0); if (sd < 0) { ast_log(LOG_ERROR, "Socket: %s\n", strerror(errno)); return -1; @@ -12302,8 +12302,7 @@ static int peer_set_srcaddr(struct iax2_peer *peer, const char *srcaddr) if (!(tmp = ast_strdupa(srcaddr))) return -1; - host = strsep(&tmp, ":"); - portstr = tmp; + ast_sockaddr_split_hostport(tmp, &host, &portstr, 0); if (portstr) { port = atoi(portstr); diff --git a/main/netsock.c b/main/netsock.c index 334617da6..994afc601 100644 --- a/main/netsock.c +++ b/main/netsock.c @@ -167,6 +167,11 @@ struct ast_netsock *ast_netsock_bind(struct ast_netsock_list *list, struct io_co struct ast_sockaddr addr; if (ast_sockaddr_parse(&addr, bindinfo, 0)) { + if (!ast_sockaddr_is_ipv4(&addr)) { + ast_log(LOG_WARNING, "Only IPv4 addresses are supported at this time.\n"); + return NULL; + } + if (!ast_sockaddr_port(&addr)) { ast_sockaddr_set_port(&addr, defaultport); } |