chan_sip: externhost/externaddr with non-default TCP/TLS ports.

ASTERISK-28372
Reported by: Anton Satskiy

ASTERISK-24428
Reported by: sstream

Change-Id: I2b7432a9bf3b09dc8515297ff955636db7a6224c
13.33
Alexander Traud 5 years ago
parent f91dc188dd
commit 91ce91dbc6

@ -3864,9 +3864,21 @@ static void ast_sip_ouraddrfor(const struct ast_sockaddr *them, struct ast_socka
/* for consistency, default to the externaddr port */ /* for consistency, default to the externaddr port */
externtcpport = ast_sockaddr_port(&externaddr); externtcpport = ast_sockaddr_port(&externaddr);
} }
if (!externtcpport) {
externtcpport = ast_sockaddr_port(&sip_tcp_desc.local_address);
}
if (!externtcpport) {
externtcpport = STANDARD_SIP_PORT;
}
ast_sockaddr_set_port(us, externtcpport); ast_sockaddr_set_port(us, externtcpport);
break; break;
case AST_TRANSPORT_TLS: case AST_TRANSPORT_TLS:
if (!externtlsport) {
externtlsport = ast_sockaddr_port(&sip_tls_desc.local_address);
}
if (!externtlsport) {
externtlsport = STANDARD_TLS_PORT;
}
ast_sockaddr_set_port(us, externtlsport); ast_sockaddr_set_port(us, externtlsport);
break; break;
case AST_TRANSPORT_UDP: case AST_TRANSPORT_UDP:
@ -32386,8 +32398,8 @@ static int reload_config(enum channelreloadreason reason)
default_primary_transport = AST_TRANSPORT_UDP; default_primary_transport = AST_TRANSPORT_UDP;
ourport_tcp = STANDARD_SIP_PORT; ourport_tcp = STANDARD_SIP_PORT;
ourport_tls = STANDARD_TLS_PORT; ourport_tls = STANDARD_TLS_PORT;
externtcpport = STANDARD_SIP_PORT; externtcpport = 0;
externtlsport = STANDARD_TLS_PORT; externtlsport = 0;
sip_cfg.srvlookup = DEFAULT_SRVLOOKUP; sip_cfg.srvlookup = DEFAULT_SRVLOOKUP;
global_tos_sip = DEFAULT_TOS_SIP; global_tos_sip = DEFAULT_TOS_SIP;
global_tos_audio = DEFAULT_TOS_AUDIO; global_tos_audio = DEFAULT_TOS_AUDIO;
@ -32866,10 +32878,9 @@ static int reload_config(enum channelreloadreason reason)
} else if (!strcasecmp(v->name, "externtcpport")) { } else if (!strcasecmp(v->name, "externtcpport")) {
if (!(externtcpport = port_str2int(v->value, 0))) { if (!(externtcpport = port_str2int(v->value, 0))) {
ast_log(LOG_WARNING, "Invalid externtcpport value, must be a positive integer between 1 and 65535 at line %d\n", v->lineno); ast_log(LOG_WARNING, "Invalid externtcpport value, must be a positive integer between 1 and 65535 at line %d\n", v->lineno);
externtcpport = 0;
} }
} else if (!strcasecmp(v->name, "externtlsport")) { } else if (!strcasecmp(v->name, "externtlsport")) {
if (!(externtlsport = port_str2int(v->value, STANDARD_TLS_PORT))) { if (!(externtlsport = port_str2int(v->value, 0))) {
ast_log(LOG_WARNING, "Invalid externtlsport value, must be a positive integer between 1 and 65535 at line %d\n", v->lineno); ast_log(LOG_WARNING, "Invalid externtlsport value, must be a positive integer between 1 and 65535 at line %d\n", v->lineno);
} }
} else if (!strcasecmp(v->name, "allow")) { } else if (!strcasecmp(v->name, "allow")) {

Loading…
Cancel
Save