mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-05 04:11:08 +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. */
|
/* no remapping, but we bind to a specific address, so use it. */
|
||||||
switch (p->socket.type) {
|
switch (p->socket.type) {
|
||||||
case AST_TRANSPORT_TCP:
|
case AST_TRANSPORT_TCP:
|
||||||
if (!ast_sockaddr_is_any(&sip_tcp_desc.local_address)) {
|
if (!ast_sockaddr_isnull(&sip_tcp_desc.local_address)) {
|
||||||
ast_sockaddr_copy(us,
|
if (!ast_sockaddr_is_any(&sip_tcp_desc.local_address)) {
|
||||||
&sip_tcp_desc.local_address);
|
ast_sockaddr_copy(us,
|
||||||
} else {
|
&sip_tcp_desc.local_address);
|
||||||
ast_sockaddr_set_port(us,
|
} else {
|
||||||
ast_sockaddr_port(&sip_tcp_desc.local_address));
|
ast_sockaddr_set_port(us,
|
||||||
}
|
ast_sockaddr_port(&sip_tcp_desc.local_address));
|
||||||
break;
|
}
|
||||||
|
break;
|
||||||
|
} /* fall through on purpose */
|
||||||
case AST_TRANSPORT_TLS:
|
case AST_TRANSPORT_TLS:
|
||||||
if (!ast_sockaddr_is_any(&sip_tls_desc.local_address)) {
|
if (!ast_sockaddr_isnull(&sip_tls_desc.local_address)) {
|
||||||
ast_sockaddr_copy(us,
|
if (!ast_sockaddr_is_any(&sip_tls_desc.local_address)) {
|
||||||
&sip_tls_desc.local_address);
|
ast_sockaddr_copy(us,
|
||||||
} else {
|
&sip_tls_desc.local_address);
|
||||||
ast_sockaddr_set_port(us,
|
} else {
|
||||||
ast_sockaddr_port(&sip_tls_desc.local_address));
|
ast_sockaddr_set_port(us,
|
||||||
}
|
ast_sockaddr_port(&sip_tls_desc.local_address));
|
||||||
break;
|
}
|
||||||
|
break;
|
||||||
|
} /* fall through on purpose */
|
||||||
case AST_TRANSPORT_UDP:
|
case AST_TRANSPORT_UDP:
|
||||||
/* fall through on purpose */
|
/* fall through on purpose */
|
||||||
default:
|
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 transport and port so the correct contact is built */
|
||||||
set_socket_transport(&p->socket, r->transport);
|
set_socket_transport(&p->socket, r->transport);
|
||||||
if (r->transport == AST_TRANSPORT_TLS || r->transport == AST_TRANSPORT_TCP) {
|
if (r->transport == AST_TRANSPORT_TLS || r->transport == AST_TRANSPORT_TCP) {
|
||||||
p->socket.port =
|
if (ast_sockaddr_isnull(&sip_tcp_desc.local_address)) {
|
||||||
htons(ast_sockaddr_port(&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