mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-03 11:25:35 +00:00
chan_sip: TCP/TLS client without server.
It is possible to configure a TCP/TLS client without having a TCP/TLS server. In that case, no error or warning was printed but the headers Contact and Via in SIP REGISTER were "(null)". ASTERISK-28798 Change-Id: I387ca5cb6a65f1eb675a29c5e41df8ec6c242ab2
This commit is contained in:
committed by
Friendly Automation
parent
52ecbbd014
commit
da9554d925
@@ -3934,23 +3934,27 @@ static void ast_sip_ouraddrfor(const struct ast_sockaddr *them, struct ast_socka
|
||||
/* no remapping, but we bind to a specific address, so use it. */
|
||||
switch (p->socket.type) {
|
||||
case AST_TRANSPORT_TCP:
|
||||
if (!ast_sockaddr_is_any(&sip_tcp_desc.local_address)) {
|
||||
ast_sockaddr_copy(us,
|
||||
&sip_tcp_desc.local_address);
|
||||
} else {
|
||||
ast_sockaddr_set_port(us,
|
||||
ast_sockaddr_port(&sip_tcp_desc.local_address));
|
||||
}
|
||||
break;
|
||||
if (!ast_sockaddr_isnull(&sip_tcp_desc.local_address)) {
|
||||
if (!ast_sockaddr_is_any(&sip_tcp_desc.local_address)) {
|
||||
ast_sockaddr_copy(us,
|
||||
&sip_tcp_desc.local_address);
|
||||
} else {
|
||||
ast_sockaddr_set_port(us,
|
||||
ast_sockaddr_port(&sip_tcp_desc.local_address));
|
||||
}
|
||||
break;
|
||||
} /* fall through on purpose */
|
||||
case AST_TRANSPORT_TLS:
|
||||
if (!ast_sockaddr_is_any(&sip_tls_desc.local_address)) {
|
||||
ast_sockaddr_copy(us,
|
||||
&sip_tls_desc.local_address);
|
||||
} else {
|
||||
ast_sockaddr_set_port(us,
|
||||
ast_sockaddr_port(&sip_tls_desc.local_address));
|
||||
}
|
||||
break;
|
||||
if (!ast_sockaddr_isnull(&sip_tls_desc.local_address)) {
|
||||
if (!ast_sockaddr_is_any(&sip_tls_desc.local_address)) {
|
||||
ast_sockaddr_copy(us,
|
||||
&sip_tls_desc.local_address);
|
||||
} else {
|
||||
ast_sockaddr_set_port(us,
|
||||
ast_sockaddr_port(&sip_tls_desc.local_address));
|
||||
}
|
||||
break;
|
||||
} /* fall through on purpose */
|
||||
case AST_TRANSPORT_UDP:
|
||||
/* fall through on purpose */
|
||||
default:
|
||||
@@ -16249,8 +16253,15 @@ static int transmit_register(struct sip_registry *r, int sipmethod, const char *
|
||||
/* Set transport and port so the correct contact is built */
|
||||
set_socket_transport(&p->socket, r->transport);
|
||||
if (r->transport == AST_TRANSPORT_TLS || r->transport == AST_TRANSPORT_TCP) {
|
||||
p->socket.port =
|
||||
htons(ast_sockaddr_port(&sip_tcp_desc.local_address));
|
||||
if (ast_sockaddr_isnull(&sip_tcp_desc.local_address)) {
|
||||
ast_log(LOG_ERROR,
|
||||
"TCP/TLS clients without server were not tested.\n");
|
||||
ast_log(LOG_ERROR,
|
||||
"Please, follow-up and report at issue 28798.\n");
|
||||
} else {
|
||||
p->socket.port =
|
||||
htons(ast_sockaddr_port(&sip_tcp_desc.local_address));
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
|
Reference in New Issue
Block a user