Fix variable reset in SIP (bug #2916)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@4303 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
parent
53082f28e9
commit
77f36c6b87
|
@ -124,15 +124,18 @@ static char *config = "sip.conf";
|
|||
|
||||
static char default_useragent[AST_MAX_EXTENSION] = DEFAULT_USERAGENT;
|
||||
|
||||
static char default_context[AST_MAX_EXTENSION] = "default";
|
||||
#define DEFAULT_CONTEXT "default"
|
||||
static char default_context[AST_MAX_EXTENSION] = DEFAULT_CONTEXT;
|
||||
|
||||
static char default_language[MAX_LANGUAGE] = "";
|
||||
|
||||
static char default_callerid[AST_MAX_EXTENSION] = "asterisk";
|
||||
#define DEFAULT_CALLERID "asterisk"
|
||||
static char default_callerid[AST_MAX_EXTENSION] = DEFAULT_CALLERID;
|
||||
|
||||
static char default_fromdomain[AST_MAX_EXTENSION] = "";
|
||||
|
||||
static char notifymime[AST_MAX_EXTENSION] = "application/simple-message-summary";
|
||||
#define DEFAULT_NOTIFYMIME "application/simple-message-summary"
|
||||
static char default_notifymime[AST_MAX_EXTENSION] = DEFAULT_NOTIFYMIME;
|
||||
|
||||
static int srvlookup = 0; /* SRV Lookup on or off. Default is off, RFC behavior is on */
|
||||
|
||||
|
@ -199,7 +202,8 @@ static char global_realm[AST_MAX_EXTENSION] = "asterisk"; /* Default realm */
|
|||
static char regcontext[AST_MAX_EXTENSION] = ""; /* Context for auto-extensions */
|
||||
|
||||
/* Expire slowly */
|
||||
static int expiry = 900;
|
||||
#define DEFAULT_EXPIRY 900
|
||||
static int expiry = DEFAULT_EXPIRY;
|
||||
|
||||
static struct sched_context *sched;
|
||||
static struct io_context *io;
|
||||
|
@ -3901,7 +3905,7 @@ static int transmit_notify_with_mwi(struct sip_pvt *p, int newmsgs, int oldmsgs)
|
|||
char clen[20];
|
||||
initreqprep(&req, p, "NOTIFY", NULL);
|
||||
add_header(&req, "Event", "message-summary");
|
||||
add_header(&req, "Content-Type", notifymime);
|
||||
add_header(&req, "Content-Type", default_notifymime);
|
||||
|
||||
snprintf(tmp, sizeof(tmp), "Messages-Waiting: %s\r\n", newmsgs ? "yes" : "no");
|
||||
snprintf(tmp2, sizeof(tmp2), "Voice-Message: %d/%d\r\n", newmsgs, oldmsgs);
|
||||
|
@ -8573,6 +8577,11 @@ static struct sip_peer *build_peer(const char *name, struct ast_variable *v, int
|
|||
}
|
||||
|
||||
/*--- reload_config: Re-read SIP.conf config file ---*/
|
||||
/* This function reloads all config data, except for
|
||||
active peers (with registrations). They will only
|
||||
change configuration data at restart, not at reload.
|
||||
SIP debug and recordhistory state will not change
|
||||
*/
|
||||
static int reload_config(void)
|
||||
{
|
||||
struct ast_config *cfg;
|
||||
|
@ -8587,8 +8596,6 @@ static int reload_config(void)
|
|||
int oldport = ntohs(bindaddr.sin_port);
|
||||
char iabuf[INET_ADDRSTRLEN];
|
||||
|
||||
global_dtmfmode = SIP_DTMF_RFC2833;
|
||||
global_promiscredir = 0;
|
||||
|
||||
if (gethostname(ourhost, sizeof(ourhost))) {
|
||||
ast_log(LOG_WARNING, "Unable to get hostname, SIP disabled\n");
|
||||
|
@ -8602,28 +8609,47 @@ static int reload_config(void)
|
|||
return 0;
|
||||
}
|
||||
|
||||
global_nat = SIP_NAT_RFC3581;
|
||||
|
||||
sip_prefs_free();
|
||||
|
||||
/* Reset IP addresses */
|
||||
memset(&bindaddr, 0, sizeof(bindaddr));
|
||||
memset(&localaddr, 0, sizeof(localaddr));
|
||||
memset(&externip, 0, sizeof(externip));
|
||||
|
||||
/* Initialize some reasonable defaults */
|
||||
strncpy(default_context, "default", sizeof(default_context) - 1);
|
||||
/* Initialize some reasonable defaults at SIP reload */
|
||||
global_nat = SIP_NAT_RFC3581;
|
||||
strncpy(default_context, DEFAULT_CONTEXT, sizeof(default_context) - 1);
|
||||
default_language[0] = '\0';
|
||||
default_fromdomain[0] = '\0';
|
||||
strncpy(default_useragent, DEFAULT_USERAGENT, sizeof(default_useragent) - 1);
|
||||
strncpy(global_realm, "asterisk", sizeof(global_realm) - 1);
|
||||
strncpy(default_notifymime, DEFAULT_NOTIFYMIME, sizeof(default_notifymime) - 1);
|
||||
global_realm[sizeof(global_realm)-1] = '\0';
|
||||
strncpy(global_musicclass, "default", sizeof(global_musicclass) - 1);
|
||||
strncpy(default_callerid, DEFAULT_CALLERID, sizeof(default_callerid) - 1);
|
||||
global_canreinvite = REINVITE_INVITE;
|
||||
videosupport = 0;
|
||||
relaxdtmf = 0;
|
||||
ourport = DEFAULT_SIP_PORT;
|
||||
global_rtptimeout = 0;
|
||||
global_rtpholdtimeout = 0;
|
||||
pedanticsipchecking=0;
|
||||
pedanticsipchecking = 0;
|
||||
global_dtmfmode = SIP_DTMF_RFC2833;
|
||||
global_promiscredir = 0;
|
||||
global_trustrpid = 0;
|
||||
global_progressinband = 0;
|
||||
global_mwitime = DEFAULT_MWITIME;
|
||||
srvlookup = 0;
|
||||
autocreatepeer = 0;
|
||||
regcontext[0] = '\0';
|
||||
tos = 0;
|
||||
expiry = DEFAULT_EXPIRY;
|
||||
|
||||
#ifdef OSP_SUPPORT
|
||||
global_ospauth = 0; /* OSP = Open Settlement Protocol */
|
||||
#endif
|
||||
|
||||
/* Read the [general] config section of sip.conf (or from realtime config) */
|
||||
v = ast_variable_browse(cfg, "general");
|
||||
while(v) {
|
||||
/* Create the interface list */
|
||||
|
@ -8669,7 +8695,7 @@ static int reload_config(void)
|
|||
} else if (!strcasecmp(v->name, "videosupport")) {
|
||||
videosupport = ast_true(v->value);
|
||||
} else if (!strcasecmp(v->name, "notifymimetype")) {
|
||||
strncpy(notifymime, v->value, sizeof(notifymime) - 1);
|
||||
strncpy(default_notifymime, v->value, sizeof(default_notifymime) - 1);
|
||||
} else if (!strcasecmp(v->name, "musicclass")) {
|
||||
strncpy(global_musicclass, v->value, sizeof(global_musicclass) - 1);
|
||||
} else if (!strcasecmp(v->name, "language")) {
|
||||
|
@ -8796,6 +8822,7 @@ static int reload_config(void)
|
|||
v = v->next;
|
||||
}
|
||||
|
||||
/* Load peers, users and friends */
|
||||
cat = ast_category_browse(cfg, NULL);
|
||||
while(cat) {
|
||||
if (strcasecmp(cat, "general")) {
|
||||
|
@ -8827,6 +8854,7 @@ static int reload_config(void)
|
|||
cat = ast_category_browse(cfg, cat);
|
||||
}
|
||||
|
||||
/* Find our IP address */
|
||||
if (ntohl(bindaddr.sin_addr.s_addr)) {
|
||||
memcpy(&__ourip, &bindaddr.sin_addr, sizeof(__ourip));
|
||||
} else {
|
||||
|
@ -8878,6 +8906,7 @@ static int reload_config(void)
|
|||
}
|
||||
ast_mutex_unlock(&netlock);
|
||||
|
||||
/* Release configuration from memory */
|
||||
ast_destroy(cfg);
|
||||
return 0;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue