[asterisk-commits] trunk - r8514 /trunk/channels/chan_sip.c

asterisk-commits at lists.digium.com asterisk-commits at lists.digium.com
Tue Jan 24 03:19:14 MST 2006


Author: oej
Date: Tue Jan 24 04:19:13 2006
New Revision: 8514

URL: http://svn.digium.com/view/asterisk?rev=8514&view=rev
Log:
- Adding doxygen comments
- Changing default values set in reload_config to DEFAULT_ #defines to make it more clear what defaults are
- Cleaning up global_ and default_ variable naming. 
- Moving variable and #defines together in the source, adding comments to explain sections

Global_ is used for channel settings that does not apply to peers or users as defaults for their settings
default_ is used both as a channel setting for unknown callers, as well as defaults for peers and users


Modified:
    trunk/channels/chan_sip.c

Modified: trunk/channels/chan_sip.c
URL: http://svn.digium.com/view/asterisk/trunk/channels/chan_sip.c?rev=8514&r1=8513&r2=8514&view=diff
==============================================================================
--- trunk/channels/chan_sip.c (original)
+++ trunk/channels/chan_sip.c Tue Jan 24 04:19:13 2006
@@ -92,8 +92,12 @@
 #include "asterisk/astosp.h"
 #endif
 
-#ifndef DEFAULT_USERAGENT
-#define DEFAULT_USERAGENT "Asterisk PBX"	/*!< Default Useragent: header unless re-defined in sip.conf */
+#ifndef FALSE
+#define FALSE	0
+#endif
+
+#ifndef TRUE
+#define TRUE 1
 #endif
  
 #define VIDEO_CODEC_MASK	0x1fc0000 /*!< Video codecs from H.261 thru AST_FORMAT_MAX_VIDEO */
@@ -111,19 +115,21 @@
 
 /* guard limit must be larger than guard secs */
 /* guard min must be < 1000, and should be >= 250 */
-#define EXPIRY_GUARD_SECS	15	/*!< How long before expiry do we reregister */
-#define EXPIRY_GUARD_LIMIT	30	/*!< Below here, we use EXPIRY_GUARD_PCT instead of 
-					   EXPIRY_GUARD_SECS */
-#define EXPIRY_GUARD_MIN	500	/*!< This is the minimum guard time applied. If 
-					   GUARD_PCT turns out to be lower than this, it 
-					   will use this time instead.
-					   This is in milliseconds. */
-#define EXPIRY_GUARD_PCT	0.20	/*!< Percentage of expires timeout to use when 
-					   below EXPIRY_GUARD_LIMIT */
+#define EXPIRY_GUARD_SECS	15		/*!< How long before expiry do we reregister */
+#define EXPIRY_GUARD_LIMIT	30		/*!< Below here, we use EXPIRY_GUARD_PCT instead of 
+					 	  EXPIRY_GUARD_SECS */
+#define EXPIRY_GUARD_MIN	500		/*!< This is the minimum guard time applied. If 
+					 	  GUARD_PCT turns out to be lower than this, it 
+						   will use this time instead.
+						   This is in milliseconds. */
+#define EXPIRY_GUARD_PCT	0.20		/*!< Percentage of expires timeout to use when 
+						   below EXPIRY_GUARD_LIMIT */
+#define DEFAULT_EXPIRY 900			/*!< Expire slowly */
 
 static int min_expiry = DEFAULT_MIN_EXPIRY;	/*!< Minimum accepted registration time */
 static int max_expiry = DEFAULT_MAX_EXPIRY;	/*!< Maximum accepted registration time */
 static int default_expiry = DEFAULT_DEFAULT_EXPIRY;
+static int expiry = DEFAULT_EXPIRY;
 
 #ifndef MAX
 #define MAX(a,b) ((a) > (b) ? (a) : (b))
@@ -133,13 +139,16 @@
 
 
 
-#define DEFAULT_MAXMS		2000		/*!< Must be faster than 2 seconds by default */
-#define DEFAULT_FREQ_OK		60 * 1000	/*!< How often to check for the host to be up */
-#define DEFAULT_FREQ_NOTOK	10 * 1000	/*!< How often to check, if the host is down... */
+#define DEFAULT_MAXMS		2000		/*!< Qualification: Must be faster than 2 seconds by default */
+#define DEFAULT_FREQ_OK		60 * 1000	/*!< Qualification: How often to check for the host to be up */
+#define DEFAULT_FREQ_NOTOK	10 * 1000	/*!< Qualification: How often to check, if the host is down... */
 
 #define DEFAULT_RETRANS		1000		/*!< How frequently to retransmit Default: 2 * 500 ms in RFC 3261 */
 #define MAX_RETRANS		6		/*!< Try only 6 times for retransmissions, a total of 7 transmissions */
 #define MAX_AUTHTRIES		3		/*!< Try authentication three times, then fail */
+
+#define SIP_MAX_HEADERS		64			/*!< Max amount of SIP headers to read */
+#define SIP_MAX_LINES 		64			/*!< Max amount of lines in SIP attachment (like SDP) */
 
 
 static const char desc[] = "Session Initiation Protocol (SIP)";
@@ -326,76 +335,90 @@
 /*! \brief SIP Extensions we support */
 #define SUPPORTED_EXTENSIONS "replaces" 
 
+#define SIP_MAX_PACKET		4096	/*!< Also from RFC 3261 (2543), should sub headers tho */
+
+/* Default values, set and reset in reload_config before reading configuration */
+/* These are default values in the source. There are other recommended values in the
+   sip.conf.sample for new installations. These may differ to keep backwards compatibility,
+   yet encouraging new behaviour on new installations 
+ */
 #define DEFAULT_SIP_PORT	5060	/*!< From RFC 3261 (former 2543) */
-#define SIP_MAX_PACKET		4096	/*!< Also from RFC 3261 (2543), should sub headers tho */
-
-static char default_useragent[AST_MAX_EXTENSION] = DEFAULT_USERAGENT;
-
-#define DEFAULT_CONTEXT "default"
+#define DEFAULT_CONTEXT		"default"
+#define DEFAULT_MUSICCLASS	"default"
+#define DEFAULT_VMEXTEN 	"asterisk"
+#define DEFAULT_CALLERID 	"asterisk"
+#define DEFAULT_NOTIFYMIME 	"application/simple-message-summary"
+#define DEFAULT_MWITIME 	10
+#define DEFAULT_ALLOWGUEST	TRUE
+#define DEFAULT_VIDEOSUPPORT	FALSE
+#define DEFAULT_SRVLOOKUP	FALSE		/*!< Recommended setting is ON */
+#define DEFAULT_COMPACTHEADERS	FALSE
+#define DEFAULT_TOS		FALSE
+#define DEFAULT_ALLOW_EXT_DOM	TRUE
+#define DEFAULT_REALM		"asterisk"
+#define DEFAULT_NOTIFYRINGING	TRUE
+#define DEFAULT_PEDANTIC	FALSE
+#define DEFAULT_AUTOCREATEPEER	FALSE
+#define DEFAULT_QUALIFY		FALSE
+#ifndef DEFAULT_USERAGENT
+#define DEFAULT_USERAGENT "Asterisk PBX"	/*!< Default Useragent: header unless re-defined in sip.conf */
+#endif
+
+/* Default setttings are used as a channel setting and as a default when
+   configuring devices */
 static char default_context[AST_MAX_CONTEXT];
 static char default_subscribecontext[AST_MAX_CONTEXT];
-
-#define DEFAULT_VMEXTEN "asterisk"
-static char global_vmexten[AST_MAX_EXTENSION];
-
 static char default_language[MAX_LANGUAGE];
-
-#define DEFAULT_CALLERID "asterisk"
 static char default_callerid[AST_MAX_EXTENSION];
-
 static char default_fromdomain[AST_MAX_EXTENSION];
-
-#define DEFAULT_NOTIFYMIME "application/simple-message-summary"
 static char default_notifymime[AST_MAX_EXTENSION];
-
+static int default_qualify;		/*!< Default Qualify= setting */
+static char default_vmexten[AST_MAX_EXTENSION];
+static char default_musicclass[MAX_MUSICCLASS];		/*!< Global music on hold class */
+
+/* Global settings only apply to the channel */
 static int global_notifyringing;	/*!< Send notifications on ringing */
-
-static int default_qualify;		/*!< Default Qualify= setting */
-
-
 static int srvlookup;			/*!< SRV Lookup on or off. Default is off, RFC behavior is on */
-
 static int pedanticsipchecking;		/*!< Extra checking ?  Default off */
-
 static int autocreatepeer;		/*!< Auto creation of peers at registration? Default off. */
-
 static int relaxdtmf;			/*!< Relax DTMF */
-
 static int global_rtptimeout;		/*!< Time out call if no RTP */
-
 static int global_rtpholdtimeout;
-
 static int global_rtpkeepalive;		/*!< Send RTP keepalives */
-
 static int global_reg_timeout;	
 static int global_regattempts_max;	/*!< Registration attempts before giving up */
-static int global_allowguest = 1;	/*!< allow unauthenticated users/peers to connect? */
-
-#define DEFAULT_MWITIME 10
+static int global_allowguest;		/*!< allow unauthenticated users/peers to connect? */
 static int global_mwitime;		/*!< Time between MWI checks for peers */
-
-static int tos = 0;
-
-static int videosupport = 0;
-
-static int compactheaders = 0;				/*!< send compact sip headers */
-
+static int global_tos;			/*!< IP Type of service */
+static int global_videosupport;		/*!< Videosupport on or off */
+static int compactheaders;		/*!< send compact sip headers */
+static int recordhistory;		/*!< Record SIP history. Off by default */
+static int dumphistory;			/*!< Dump history to verbose before destroying SIP dialog */
+static char global_realm[MAXHOSTNAMELEN]; 		/*!< Default realm */
+static char regcontext[AST_MAX_CONTEXT];		/*!< Context for auto-extensions */
+static char global_useragent[AST_MAX_EXTENSION];	/*!< Useragent for the SIP channel */
+static int allow_external_domains;	/*!< Accept calls to external SIP domains? */
+
+/*! \brief Codecs that we support by default: */
+static int global_capability = AST_FORMAT_ULAW | AST_FORMAT_ALAW | AST_FORMAT_GSM | AST_FORMAT_H263;
+static int noncodeccapability = AST_RTP_DTMF;
 
 /* Object counters */
-static int suserobjs = 0;
-static int ruserobjs = 0;
-static int speerobjs = 0;
-static int rpeerobjs = 0;
-static int apeerobjs = 0;
-static int regobjs = 0;
+static int suserobjs = 0;		/*!< Static users */
+static int ruserobjs = 0;		/*!< Realtime users */
+static int speerobjs = 0;		/*!< Statis peers */
+static int rpeerobjs = 0;		/*!< Realtime peers */
+static int apeerobjs = 0;		/*!< Autocreated peer objects */
+static int regobjs = 0;			/*!< Registry objects */
 
 static struct ast_flags global_flags = {0};		/*!< global SIP_ flags */
 static struct ast_flags global_flags_page2 = {0};	/*!< more global SIP_ flags */
 
 static int usecnt =0;
+
 AST_MUTEX_DEFINE_STATIC(usecnt_lock);
 
-AST_MUTEX_DEFINE_STATIC(rand_lock);
+AST_MUTEX_DEFINE_STATIC(rand_lock);			/*!< Lock for thread-safe random generator */
 
 /*! \brief Protect the SIP dialog list (of sip_pvt's) */
 AST_MUTEX_DEFINE_STATIC(iflock);
@@ -412,32 +435,16 @@
 
 static int restart_monitor(void);
 
-/*! \brief Codecs that we support by default: */
-static int global_capability = AST_FORMAT_ULAW | AST_FORMAT_ALAW | AST_FORMAT_GSM | AST_FORMAT_H263;
-static int noncodeccapability = AST_RTP_DTMF;
 
 static struct in_addr __ourip;
 static struct sockaddr_in outboundproxyip;
 static int ourport;
-
 static struct sockaddr_in debugaddr;
 
-static int recordhistory;				/*!< Record SIP history. Off by default */
-static int dumphistory;					/*!< Dump history to verbose before destroying SIP dialog */
-
-static char global_musicclass[MAX_MUSICCLASS];		/*!< Global music on hold class */
-#define DEFAULT_REALM	"asterisk"
-static char global_realm[MAXHOSTNAMELEN]; 		/*!< Default realm */
-static char regcontext[AST_MAX_CONTEXT];		/*!< Context for auto-extensions */
-
-#define DEFAULT_EXPIRY 900				/*!< Expire slowly */
-static int expiry = DEFAULT_EXPIRY;
 
 static struct sched_context *sched;
 static struct io_context *io;
 
-#define SIP_MAX_HEADERS		64			/*!< Max amount of SIP headers to read */
-#define SIP_MAX_LINES 		64			/*!< Max amount of lines in SIP attachment (like SDP) */
 
 #define DEC_CALL_LIMIT	0
 #define INC_CALL_LIMIT	1
@@ -493,7 +500,6 @@
 
 static AST_LIST_HEAD_STATIC(domain_list, domain);	/*!< The SIP domain list */
 
-int allow_external_domains;		/*!< Accept calls to external SIP domains? */
 
 /*! \brief sip_history: Structure for saving transactions within a SIP dialog */
 struct sip_history {
@@ -3129,10 +3135,10 @@
 
 	if (sip_methods[intended_method].need_rtp) {
 		p->rtp = ast_rtp_new_with_bindaddr(sched, io, 1, 0, bindaddr.sin_addr);
-		if (videosupport)
+		if (global_videosupport)
 			p->vrtp = ast_rtp_new_with_bindaddr(sched, io, 1, 0, bindaddr.sin_addr);
-		if (!p->rtp || (videosupport && !p->vrtp)) {
-			ast_log(LOG_WARNING, "Unable to create RTP audio %s session: %s\n", videosupport ? "and video" : "", strerror(errno));
+		if (!p->rtp || (global_videosupport && !p->vrtp)) {
+			ast_log(LOG_WARNING, "Unable to create RTP audio %s session: %s\n", global_videosupport ? "and video" : "", strerror(errno));
 			ast_mutex_destroy(&p->lock);
 			if (p->chanvars) {
 				ast_variables_destroy(p->chanvars);
@@ -3141,9 +3147,9 @@
 			free(p);
 			return NULL;
 		}
-		ast_rtp_settos(p->rtp, tos);
+		ast_rtp_settos(p->rtp, global_tos);
 		if (p->vrtp)
-			ast_rtp_settos(p->vrtp, tos);
+			ast_rtp_settos(p->vrtp, global_tos);
 		p->rtptimeout = global_rtptimeout;
 		p->rtpholdtimeout = global_rtpholdtimeout;
 		p->rtpkeepalive = global_rtpkeepalive;
@@ -3168,7 +3174,7 @@
 		ast_string_field_set(p, callid, callid);
 	ast_copy_flags(p, &global_flags, SIP_FLAGS_TO_COPY);
 	/* Assign default music on hold class */
-	ast_string_field_set(p, musicclass, global_musicclass);
+	ast_string_field_set(p, musicclass, default_musicclass);
 	p->capability = global_capability;
 	if ((ast_test_flag(p, SIP_DTMF) == SIP_DTMF_RFC2833) || (ast_test_flag(p, SIP_DTMF) == SIP_DTMF_AUTO))
 		p->noncodeccapability |= AST_RTP_DTMF;
@@ -4071,7 +4077,7 @@
 	add_header(resp, "To", ot);
 	copy_header(resp, req, "Call-ID");
 	copy_header(resp, req, "CSeq");
-	add_header(resp, "User-Agent", default_useragent);
+	add_header(resp, "User-Agent", global_useragent);
 	add_header(resp, "Allow", ALLOWED_METHODS);
 	if (msg[0] == '2' && (p->method == SIP_SUBSCRIBE || p->method == SIP_REGISTER)) {
 		/* For registration responses, we also need expiry and
@@ -4187,7 +4193,7 @@
 	copy_header(req, orig, "Call-ID");
 	add_header(req, "CSeq", tmp);
 
-	add_header(req, "User-Agent", default_useragent);
+	add_header(req, "User-Agent", global_useragent);
 	add_header(req, "Max-Forwards", DEFAULT_MAX_FORWARDS);
 
 	if (!ast_strlen_zero(p->rpid))
@@ -4506,7 +4512,7 @@
 	}
 
 	/* Now send any other common codecs, and non-codec formats: */
-	for (x = 1; x <= ((videosupport && p->vrtp) ? AST_FORMAT_MAX_VIDEO : AST_FORMAT_MAX_AUDIO); x <<= 1) {
+	for (x = 1; x <= ((global_videosupport && p->vrtp) ? AST_FORMAT_MAX_VIDEO : AST_FORMAT_MAX_AUDIO); x <<= 1) {
 		if (!(capability & x))
 			continue;
 
@@ -4916,7 +4922,7 @@
 	add_header(req, "Contact", p->our_contact);
 	add_header(req, "Call-ID", p->callid);
 	add_header(req, "CSeq", tmp);
-	add_header(req, "User-Agent", default_useragent);
+	add_header(req, "User-Agent", global_useragent);
 	add_header(req, "Max-Forwards", DEFAULT_MAX_FORWARDS);
 	if (!ast_strlen_zero(p->rpid))
 		add_header(req, "Remote-Party-ID", p->rpid);
@@ -5205,7 +5211,7 @@
 	add_header(&req, "Content-Type", default_notifymime);
 
 	ast_build_string(&t, &maxbytes, "Messages-Waiting: %s\r\n", newmsgs ? "yes" : "no");
-	ast_build_string(&t, &maxbytes, "Message-Account: sip:%s@%s\r\n", !ast_strlen_zero(vmexten) ? vmexten : global_vmexten, ast_strlen_zero(p->fromdomain) ? ast_inet_ntoa(iabuf, sizeof(iabuf), p->ourip) : p->fromdomain);
+	ast_build_string(&t, &maxbytes, "Message-Account: sip:%s@%s\r\n", !ast_strlen_zero(vmexten) ? vmexten : default_vmexten, ast_strlen_zero(p->fromdomain) ? ast_inet_ntoa(iabuf, sizeof(iabuf), p->ourip) : p->fromdomain);
 	ast_build_string(&t, &maxbytes, "Voice-Message: %d/%d (0/0)\r\n", newmsgs, oldmsgs);
 
 	if (t > tmp + sizeof(tmp))
@@ -5511,7 +5517,7 @@
 	add_header(&req, "To", to);
 	add_header(&req, "Call-ID", p->callid);
 	add_header(&req, "CSeq", tmp);
-	add_header(&req, "User-Agent", default_useragent);
+	add_header(&req, "User-Agent", global_useragent);
 	add_header(&req, "Max-Forwards", DEFAULT_MAX_FORWARDS);
 
 	
@@ -8247,7 +8253,7 @@
 	ast_cli(fd, "----------------\n");
 	ast_cli(fd, "  SIP Port:               %d\n", ntohs(bindaddr.sin_port));
 	ast_cli(fd, "  Bindaddress:            %s\n", ast_inet_ntoa(tmp, sizeof(tmp), bindaddr.sin_addr));
-	ast_cli(fd, "  Videosupport:           %s\n", videosupport ? "Yes" : "No");
+	ast_cli(fd, "  Videosupport:           %s\n", global_videosupport ? "Yes" : "No");
 	ast_cli(fd, "  AutoCreatePeer:         %s\n", autocreatepeer ? "Yes" : "No");
 	ast_cli(fd, "  Allow unknown access:   %s\n", global_allowguest ? "Yes" : "No");
 	ast_cli(fd, "  Promsic. redir:         %s\n", ast_test_flag(&global_flags, SIP_PROMISCREDIR) ? "Yes" : "No");
@@ -8256,14 +8262,14 @@
 	ast_cli(fd, "  URI user is phone no:   %s\n", ast_test_flag(&global_flags, SIP_USEREQPHONE) ? "Yes" : "No");
 	ast_cli(fd, "  Our auth realm          %s\n", global_realm);
 	ast_cli(fd, "  Realm. auth:            %s\n", authl ? "Yes": "No");
-	ast_cli(fd, "  User Agent:             %s\n", default_useragent);
+	ast_cli(fd, "  User Agent:             %s\n", global_useragent);
 	ast_cli(fd, "  MWI checking interval:  %d secs\n", global_mwitime);
 	ast_cli(fd, "  Reg. context:           %s\n", ast_strlen_zero(regcontext) ? "(not set)" : regcontext);
 	ast_cli(fd, "  Caller ID:              %s\n", default_callerid);
 	ast_cli(fd, "  From: Domain:           %s\n", default_fromdomain);
 	ast_cli(fd, "  Record SIP history:     %s\n", recordhistory ? "On" : "Off");
 	ast_cli(fd, "  Call Events:            %s\n", callevents ? "On" : "Off");
-	ast_cli(fd, "  IP ToS:                 0x%x\n", tos);
+	ast_cli(fd, "  IP ToS:                 0x%x\n", global_tos);
 #ifdef OSP_SUPPORT
 	ast_cli(fd, "  OSP Support:            Yes\n");
 #else
@@ -8301,8 +8307,8 @@
 	ast_cli(fd, "  Use ClientCode:         %s\n", ast_test_flag(&global_flags, SIP_USECLIENTCODE) ? "Yes" : "No");
 	ast_cli(fd, "  Progress inband:        %s\n", (ast_test_flag(&global_flags, SIP_PROG_INBAND) == SIP_PROG_INBAND_NEVER) ? "Never" : (ast_test_flag(&global_flags, SIP_PROG_INBAND) == SIP_PROG_INBAND_NO) ? "No" : "Yes" );
 	ast_cli(fd, "  Language:               %s\n", ast_strlen_zero(default_language) ? "(Defaults to English)" : default_language);
-	ast_cli(fd, "  Musicclass:             %s\n", global_musicclass);
-	ast_cli(fd, "  Voice Mail Extension:   %s\n", global_vmexten);
+	ast_cli(fd, "  Musicclass:             %s\n", default_musicclass);
+	ast_cli(fd, "  Voice Mail Extension:   %s\n", default_vmexten);
 
 	
 	if (realtimepeers || realtimeusers) {
@@ -11945,7 +11951,7 @@
 	/* set default context */
 	strcpy(user->context, default_context);
 	strcpy(user->language, default_language);
-	strcpy(user->musicclass, global_musicclass);
+	strcpy(user->musicclass, default_musicclass);
 	for (; v; v = v->next) {
 		if (handle_common_options(&userflags, &mask, v))
 			continue;
@@ -12027,7 +12033,7 @@
 	strcpy(peer->context, default_context);
 	strcpy(peer->subscribecontext, default_subscribecontext);
 	strcpy(peer->language, default_language);
-	strcpy(peer->musicclass, global_musicclass);
+	strcpy(peer->musicclass, default_musicclass);
 	peer->addr.sin_port = htons(DEFAULT_SIP_PORT);
 	peer->addr.sin_family = AF_INET;
 	peer->capability = global_capability;
@@ -12097,9 +12103,9 @@
 	}
 	strcpy(peer->context, default_context);
 	strcpy(peer->subscribecontext, default_subscribecontext);
-	strcpy(peer->vmexten, global_vmexten);
+	strcpy(peer->vmexten, default_vmexten);
 	strcpy(peer->language, default_language);
-	strcpy(peer->musicclass, global_musicclass);
+	strcpy(peer->musicclass, default_musicclass);
 	ast_copy_flags(peer, &global_flags, SIP_USEREQPHONE);
 	peer->secret[0] = '\0';
 	peer->md5secret[0] = '\0';
@@ -12331,58 +12337,66 @@
 		return -1;
 	}
 	
+	/* Clear all flags before setting default values */
+	ast_clear_flag(&global_flags, AST_FLAGS_ALL);
+
 	/* Reset IP addresses  */
 	memset(&bindaddr, 0, sizeof(bindaddr));
 	memset(&localaddr, 0, sizeof(localaddr));
 	memset(&externip, 0, sizeof(externip));
 	memset(&prefs, 0 , sizeof(prefs));
-	ast_clear_flag(&global_flags_page2, SIP_PAGE2_DEBUG_CONFIG);
-
-	/* Initialize some reasonable defaults at SIP reload */
+	outboundproxyip.sin_port = htons(DEFAULT_SIP_PORT);
+	outboundproxyip.sin_family = AF_INET;	/* Type of address: IPv4 */
+	ourport = DEFAULT_SIP_PORT;
+	srvlookup = DEFAULT_SRVLOOKUP;
+	global_tos = DEFAULT_TOS;
+	externhost[0] = '\0';			/* External host name (for behind NAT DynDNS support) */
+	externexpire = 0;			/* Expiration for DNS re-issuing */
+	externrefresh = 10;
+	memset(&outboundproxyip, 0, sizeof(outboundproxyip));
+
+	/* Reset channel settings to default before re-configuring */
+	allow_external_domains = DEFAULT_ALLOW_EXT_DOM;				/* Allow external invites */
+	regcontext[0] = '\0';
+	expiry = DEFAULT_EXPIRY;
+	global_notifyringing = DEFAULT_NOTIFYRINGING;
+	ast_copy_string(global_useragent, DEFAULT_USERAGENT, sizeof(global_useragent));
+	ast_copy_string(default_notifymime, DEFAULT_NOTIFYMIME, sizeof(default_notifymime));
+	ast_copy_string(global_realm, DEFAULT_REALM, sizeof(global_realm));
+	ast_copy_string(default_callerid, DEFAULT_CALLERID, sizeof(default_callerid));
+	global_videosupport = DEFAULT_VIDEOSUPPORT;
+	compactheaders = DEFAULT_COMPACTHEADERS;
+	global_reg_timeout = DEFAULT_REGISTRATION_TIMEOUT;
+	global_regattempts_max = 0;
+	pedanticsipchecking = DEFAULT_PEDANTIC;
+	global_mwitime = DEFAULT_MWITIME;
+	autocreatepeer = DEFAULT_AUTOCREATEPEER;
+	global_allowguest = DEFAULT_ALLOWGUEST;
+	global_rtptimeout = 0;
+	global_rtpholdtimeout = 0;
+	global_rtpkeepalive = 0;
+	ast_set_flag(&global_flags_page2, SIP_PAGE2_RTUPDATE);
+
+	/* Initialize some reasonable defaults at SIP reload (used both for channel and as default for peers and users */
 	ast_copy_string(default_context, DEFAULT_CONTEXT, sizeof(default_context));
 	default_subscribecontext[0] = '\0';
 	default_language[0] = '\0';
 	default_fromdomain[0] = '\0';
-	default_qualify = 0;
-	allow_external_domains = 1;	/* Allow external invites */
-	externhost[0] = '\0';
-	externexpire = 0;
-	externrefresh = 10;
-	ast_copy_string(default_useragent, DEFAULT_USERAGENT, sizeof(default_useragent));
-	ast_copy_string(default_notifymime, DEFAULT_NOTIFYMIME, sizeof(default_notifymime));
-	global_notifyringing = 1;
-	ast_copy_string(global_realm, DEFAULT_REALM, sizeof(global_realm));
-	ast_copy_string(global_musicclass, "default", sizeof(global_musicclass));
-	ast_copy_string(default_callerid, DEFAULT_CALLERID, sizeof(default_callerid));
-	memset(&outboundproxyip, 0, sizeof(outboundproxyip));
-	outboundproxyip.sin_port = htons(DEFAULT_SIP_PORT);
-	outboundproxyip.sin_family = AF_INET;	/* Type of address: IPv4 */
-	videosupport = 0;
-	compactheaders = 0;
-	dumphistory = 0;
-	recordhistory = 0;
+	default_qualify = DEFAULT_QUALIFY;
+	ast_copy_string(default_musicclass, DEFAULT_MUSICCLASS, sizeof(default_musicclass));
+	ast_copy_string(default_vmexten, DEFAULT_VMEXTEN, sizeof(default_vmexten));
+	ast_set_flag(&global_flags, SIP_DTMF_RFC2833);			/*!< Default DTMF setting: RFC2833 */
+	ast_set_flag(&global_flags, SIP_NAT_RFC3581);			/*!< NAT support if requested by device with rport */
+	ast_set_flag(&global_flags, SIP_CAN_REINVITE);			/*!< Allow re-invites */
+
+	/* Debugging settings, always default to off */
+	dumphistory = FALSE;
+	recordhistory = FALSE;
+	ast_clear_flag(&global_flags_page2, SIP_PAGE2_DEBUG_CONFIG);
+
+	/* Misc settings for the channel */
 	relaxdtmf = 0;
 	callevents = 0;
-	ourport = DEFAULT_SIP_PORT;
-	global_rtptimeout = 0;
-	global_rtpholdtimeout = 0;
-	global_rtpkeepalive = 0;
-	pedanticsipchecking = 0;
-	global_reg_timeout = DEFAULT_REGISTRATION_TIMEOUT;
-	global_regattempts_max = 0;
-	ast_clear_flag(&global_flags, AST_FLAGS_ALL);
-	ast_set_flag(&global_flags, SIP_DTMF_RFC2833);
-	ast_set_flag(&global_flags, SIP_NAT_RFC3581);
-	ast_set_flag(&global_flags, SIP_CAN_REINVITE);
-	ast_set_flag(&global_flags_page2, SIP_PAGE2_RTUPDATE);
-	global_mwitime = DEFAULT_MWITIME;
-	strcpy(global_vmexten, DEFAULT_VMEXTEN);
-	srvlookup = 0;
-	autocreatepeer = 0;
-	regcontext[0] = '\0';
-	tos = 0;
-	expiry = DEFAULT_EXPIRY;
-	global_allowguest = 1;
 
 	/* Read the [general] config section of sip.conf (or from realtime config) */
 	for (v = ast_variable_browse(cfg, "general"); v; v = v->next) {
@@ -12395,9 +12409,8 @@
 		} else if (!strcasecmp(v->name, "realm")) {
 			ast_copy_string(global_realm, v->value, sizeof(global_realm));
 		} else if (!strcasecmp(v->name, "useragent")) {
-			ast_copy_string(default_useragent, v->value, sizeof(default_useragent));
-			ast_log(LOG_DEBUG, "Setting User Agent Name to %s\n",
-				default_useragent);
+			ast_copy_string(global_useragent, v->value, sizeof(global_useragent));
+			ast_log(LOG_DEBUG, "Setting SIP channel User-Agent Name to %s\n", global_useragent);
 		} else if (!strcasecmp(v->name, "rtcachefriends")) {
 			ast_set2_flag((&global_flags_page2), ast_true(v->value), SIP_PAGE2_RTCACHEFRIENDS);	
 		} else if (!strcasecmp(v->name, "rtupdate")) {
@@ -12421,7 +12434,7 @@
 				global_mwitime = DEFAULT_MWITIME;
 			}
 		} else if (!strcasecmp(v->name, "vmexten")) {
-			ast_copy_string(global_vmexten, v->value, sizeof(global_vmexten));
+			ast_copy_string(default_vmexten, v->value, sizeof(default_vmexten));
 		} else if (!strcasecmp(v->name, "rtptimeout")) {
 			if ((sscanf(v->value, "%d", &global_rtptimeout) != 1) || (global_rtptimeout < 0)) {
 				ast_log(LOG_WARNING, "'%s' is not a valid RTP hold time at line %d.  Using default.\n", v->value, v->lineno);
@@ -12438,7 +12451,7 @@
 				global_rtpkeepalive = 0;
 			}
 		} else if (!strcasecmp(v->name, "videosupport")) {
-			videosupport = ast_true(v->value);
+			global_videosupport = ast_true(v->value);
 		} else if (!strcasecmp(v->name, "compactheaders")) {
 			compactheaders = ast_true(v->value);
 		} else if (!strcasecmp(v->name, "notifymimetype")) {
@@ -12446,7 +12459,7 @@
 		} else if (!strcasecmp(v->name, "notifyringing")) {
 			global_notifyringing = ast_true(v->value);
 		} else if (!strcasecmp(v->name, "musicclass") || !strcasecmp(v->name, "musiconhold")) {
-			ast_copy_string(global_musicclass, v->value, sizeof(global_musicclass));
+			ast_copy_string(default_musicclass, v->value, sizeof(default_musicclass));
 		} else if (!strcasecmp(v->name, "language")) {
 			ast_copy_string(default_language, v->value, sizeof(default_language));
 		} else if (!strcasecmp(v->name, "regcontext")) {
@@ -12552,7 +12565,7 @@
 		} else if (!strcasecmp(v->name, "register")) {
 			sip_register(v->value, v->lineno);
 		} else if (!strcasecmp(v->name, "tos")) {
-			if (ast_str2tos(v->value, &tos))
+			if (ast_str2tos(v->value, &global_tos))
 				ast_log(LOG_WARNING, "Invalid tos value at line %d, should be 'lowdelay', 'throughput', 'reliability', 'mincost', or 'none'\n", v->lineno);
 		} else if (!strcasecmp(v->name, "bindport")) {
 			if (sscanf(v->value, "%d", &ourport) == 1) {
@@ -12660,10 +12673,10 @@
 				if (option_verbose > 1) { 
 					ast_verbose(VERBOSE_PREFIX_2 "SIP Listening on %s:%d\n", 
 					ast_inet_ntoa(iabuf, sizeof(iabuf), bindaddr.sin_addr), ntohs(bindaddr.sin_port));
-					ast_verbose(VERBOSE_PREFIX_2 "Using TOS bits %d\n", tos);
+					ast_verbose(VERBOSE_PREFIX_2 "Using TOS bits %d\n", global_tos);
 				}
-				if (setsockopt(sipsock, IPPROTO_IP, IP_TOS, &tos, sizeof(tos))) 
-					ast_log(LOG_WARNING, "Unable to set TOS to %d\n", tos);
+				if (setsockopt(sipsock, IPPROTO_IP, IP_TOS, &global_tos, sizeof(global_tos))) 
+					ast_log(LOG_WARNING, "Unable to set TOS to %d\n", global_tos);
 			}
 		}
 	}



More information about the asterisk-commits mailing list