[asterisk-commits] jpdionne: branch group/v6-new r271125 - in /team/group/v6-new/channels: ./ si...
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Thu Jun 17 10:16:04 CDT 2010
Author: jpdionne
Date: Thu Jun 17 10:16:00 2010
New Revision: 271125
URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=271125
Log:
Fix various inconsistencies in configuration with *bindaddr and {tcp,tls}enable.
Modified:
team/group/v6-new/channels/chan_sip.c
team/group/v6-new/channels/sip/include/sip.h
Modified: team/group/v6-new/channels/chan_sip.c
URL: http://svnview.digium.com/svn/asterisk/team/group/v6-new/channels/chan_sip.c?view=diff&rev=271125&r1=271124&r2=271125
==============================================================================
--- team/group/v6-new/channels/chan_sip.c (original)
+++ team/group/v6-new/channels/chan_sip.c Thu Jun 17 10:16:00 2010
@@ -2190,6 +2190,9 @@
/*! \brief The TCP server definition */
static struct ast_tcptls_session_args sip_tcp_desc = {
+ .local_address = { { 0, } },
+ .remote_address = { { 0, } },
+ .old_address = { { 0, } },
.accept_fd = -1,
.master = AST_PTHREADT_NULL,
.tls_cfg = NULL,
@@ -2201,6 +2204,9 @@
/*! \brief The TCP/TLS server definition */
static struct ast_tcptls_session_args sip_tls_desc = {
+ .local_address = { { 0, } },
+ .remote_address = { { 0, } },
+ .old_address = { { 0, } },
.accept_fd = -1,
.master = AST_PTHREADT_NULL,
.tls_cfg = &sip_tls_cfg,
@@ -16271,11 +16277,11 @@
ast_cli(a->fd, "\n\nGlobal Settings:\n");
ast_cli(a->fd, "----------------\n");
ast_cli(a->fd, " UDP Bindaddress: %s\n", ast_sockaddr_stringify(&bindaddr));
- ast_cli(a->fd, " TCP SIP Bindaddres: %s\n",
- ast_sockaddr_isnull(&sip_tcp_desc.local_address) ?
- "Disabled" :
- ast_sockaddr_stringify(&sip_tcp_desc.local_address));
- ast_cli(a->fd, " TLS SIP Bindaddres: %s\n",
+ ast_cli(a->fd, " TCP SIP Bindaddress: %s\n",
+ sip_cfg.tcp_enabled != FALSE ?
+ ast_sockaddr_stringify(&sip_tcp_desc.local_address) :
+ "Disabled");
+ ast_cli(a->fd, " TLS SIP Bindaddress: %s\n",
default_tls_cfg.enabled != FALSE ?
ast_sockaddr_stringify(&sip_tls_desc.local_address) :
"Disabled");
@@ -25935,6 +25941,7 @@
ast_set_flag(&global_flags[1], SIP_PAGE2_ALLOWOVERLAP); /* Default for all devices: TRUE */
sip_cfg.peer_rtupdate = TRUE;
global_dynamic_exclude_static = 0; /* Exclude static peers */
+ sip_cfg.tcp_enabled = FALSE;
/* Session-Timers */
global_st_mode = SESSION_TIMER_MODE_ACCEPT;
@@ -26073,7 +26080,7 @@
} else if (!strcasecmp(v->name, "tcpenable")) {
if(!ast_false(v->value)) {
ast_debug(2, "Enabling TCP socket for listening\n");
- ast_sockaddr_parse(&sip_tcp_desc.local_address, "0.0.0.0:5060", 0);
+ sip_cfg.tcp_enabled = TRUE;
}
} else if (!strcasecmp(v->name, "tcpbindaddr")) {
if (ast_parse_arg(v->value, PARSE_ADDR, &sip_tcp_desc.local_address))
@@ -26245,6 +26252,8 @@
} else if (!strcasecmp(v->name, "bindaddr") || !strcasecmp(v->name, "udpbindaddr")) {
if (ast_parse_arg(v->value, PARSE_ADDR, &bindaddr))
ast_log(LOG_WARNING, "Invalid address: %s\n", v->value);
+ if (!ast_sockaddr_port(&bindaddr))
+ ast_sockaddr_set_port(&bindaddr, STANDARD_SIP_PORT);
} else if (!strcasecmp(v->name, "localnet")) {
struct ast_ha *na;
int ha_error = 0;
@@ -26609,19 +26618,26 @@
ast_mutex_unlock(&netlock);
/* Start TCP server */
- ast_tcptls_server_start(&sip_tcp_desc);
- if (sip_tcp_desc.accept_fd == -1 && !ast_sockaddr_isnull(&sip_tcp_desc.local_address)) {
- /* TCP server start failed. Tell the admin */
- ast_log(LOG_ERROR, "SIP TCP Server start failed. Not listening on TCP socket.\n");
- ast_sockaddr_setnull(&sip_tcp_desc.local_address);
- } else {
- ast_debug(2, "SIP TCP server started\n");
+ if (sip_cfg.tcp_enabled) {
+ if (ast_sockaddr_isnull(&sip_tcp_desc.local_address))
+ ast_sockaddr_copy(&sip_tcp_desc.local_address, &bindaddr);
+ ast_tcptls_server_start(&sip_tcp_desc);
+ if (sip_tcp_desc.accept_fd == -1) {
+ /* TCP server start failed. Tell the admin */
+ ast_log(LOG_ERROR, "SIP TCP Server start failed. Not listening on TCP socket.\n");
+ } else {
+ ast_debug(2, "SIP TCP server started\n");
+ }
}
/* Start TLS server if needed */
memcpy(sip_tls_desc.tls_cfg, &default_tls_cfg, sizeof(default_tls_cfg));
if (ast_ssl_setup(sip_tls_desc.tls_cfg)) {
+ if (ast_sockaddr_isnull(&sip_tls_desc.local_address)) {
+ ast_sockaddr_copy(&sip_tls_desc.local_address, &bindaddr);
+ ast_sockaddr_set_port(&sip_tls_desc.local_address, STANDARD_TLS_PORT);
+ }
ast_tcptls_server_start(&sip_tls_desc);
if (default_tls_cfg.enabled && sip_tls_desc.accept_fd == -1) {
ast_log(LOG_ERROR, "TLS Server start failed. Not listening on TLS socket.\n");
@@ -26658,8 +26674,9 @@
SIP_DOMAIN_AUTO, NULL);
/* If TLS is running on a different IP than UDP and TCP, then add that too */
- if (ast_sockaddr_isnull(&sip_tls_desc.local_address) &&
- !ast_sockaddr_cmp(&bindaddr, &sip_tls_desc.local_address))
+ if (!ast_sockaddr_isnull(&sip_tls_desc.local_address) &&
+ !ast_sockaddr_cmp(&bindaddr, &sip_tls_desc.local_address) &&
+ !ast_sockaddr_cmp(&sip_tcp_desc.local_address, &sip_tls_desc.local_address))
add_sip_domain(ast_sockaddr_stringify(&sip_tcp_desc.local_address),
SIP_DOMAIN_AUTO, NULL);
Modified: team/group/v6-new/channels/sip/include/sip.h
URL: http://svnview.digium.com/svn/asterisk/team/group/v6-new/channels/sip/include/sip.h?view=diff&rev=271125&r1=271124&r2=271125
==============================================================================
--- team/group/v6-new/channels/sip/include/sip.h (original)
+++ team/group/v6-new/channels/sip/include/sip.h Thu Jun 17 10:16:00 2010
@@ -693,6 +693,7 @@
char default_subscribecontext[AST_MAX_CONTEXT];
struct ast_ha *contact_ha; /*! \brief Global list of addresses dynamic peers are not allowed to use */
format_t capability; /*!< Supported codecs */
+ int tcp_enabled;
};
/*! \brief The SIP socket definition */
More information about the asterisk-commits
mailing list