From: Jonathan Rose Date: Tue, 28 Feb 2012 18:11:15 +0000 (+0000) Subject: Changes transport option in sip.conf so that using multiple instances doesn't stack. X-Git-Tag: 10.3.0~86 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7deeed0304c930ad583d77d70f8b74a1a37b2fb0;p=thirdparty%2Fasterisk.git Changes transport option in sip.conf so that using multiple instances doesn't stack. Prior to this patch, Using "transport=" multiple times would cause them to add to one another like allow/deny. This patch changes that behavior to simply use the transport option specified last. Also, if no transport option is applied now, the default will automatically be UDP. (closes ASTERISK-19352) Reported by: jamicque Patches: asterisk-19352-transport-warning-message-v1.patch uploaded by Michael L. Young (license 5026) issueA19352_no_transport_is_udp.patch uploaded by Walter Doekes (license 5674) Review: https://reviewboard.asterisk.org/r/1745/diff/#index_header ........ Merged revisions 357266 from http://svn.asterisk.org/svn/asterisk/branches/1.8 git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/10@357271 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/channels/chan_sip.c b/channels/chan_sip.c index 9114f8ef3f..977c62d2f2 100644 --- a/channels/chan_sip.c +++ b/channels/chan_sip.c @@ -28154,10 +28154,11 @@ static struct sip_peer *build_peer(const char *name, struct ast_variable *v, str if (handle_t38_options(&peerflags[0], &mask[0], v, &peer->t38_maxdatagram)) { continue; } - if (!strcasecmp(v->name, "transport") && !ast_strlen_zero(v->value)) { + if (!strcasecmp(v->name, "transport")) { char *val = ast_strdupa(v->value); char *trans; + peer->transports = peer->default_outbound_transport = 0; while ((trans = strsep(&val, ","))) { trans = ast_skip_blanks(trans); @@ -28168,7 +28169,7 @@ static struct sip_peer *build_peer(const char *name, struct ast_variable *v, str } else if (default_tls_cfg.enabled && !strncasecmp(trans, "tls", 3)) { peer->transports |= SIP_TRANSPORT_TLS; } else if (!strncasecmp(trans, "tcp", 3) || !strncasecmp(trans, "tls", 3)) { - ast_log(LOG_WARNING, "'%.3s' is not a valid transport type when %.3senabled=no. If no other is specified, the defaults from general will be used.\n", trans, trans); + ast_log(LOG_WARNING, "'%.3s' is not a valid transport type when %.3senable=no. If no other is specified, the defaults from general will be used.\n", trans, trans); } else { ast_log(LOG_NOTICE, "'%s' is not a valid transport type. if no other is specified, the defaults from general will be used.\n", trans); } @@ -28911,8 +28912,8 @@ static int reload_config(enum channelreloadreason reason) memset(&default_prefs, 0 , sizeof(default_prefs)); memset(&sip_cfg.outboundproxy, 0, sizeof(struct sip_proxy)); sip_cfg.outboundproxy.force = FALSE; /*!< Don't force proxy usage, use route: headers */ - default_transports = 0; /*!< Reset default transport to zero here, default value later on */ - default_primary_transport = 0; /*!< Reset default primary transport to zero here, default value later on */ + default_transports = SIP_TRANSPORT_UDP; + default_primary_transport = SIP_TRANSPORT_UDP; ourport_tcp = STANDARD_SIP_PORT; ourport_tls = STANDARD_TLS_PORT; externtcpport = STANDARD_SIP_PORT; @@ -29102,10 +29103,11 @@ static int reload_config(enum channelreloadreason reason) timerb_set = 1; } else if (!strcasecmp(v->name, "t1min")) { global_t1min = atoi(v->value); - } else if (!strcasecmp(v->name, "transport") && !ast_strlen_zero(v->value)) { + } else if (!strcasecmp(v->name, "transport")) { char *val = ast_strdupa(v->value); char *trans; + default_transports = default_primary_transport = 0; while ((trans = strsep(&val, ","))) { trans = ast_skip_blanks(trans);