From 48647bfc086b463c38fa247e31b9831eab42440b Mon Sep 17 00:00:00 2001
From: Mark Spencer <markster@digium.com>
Date: Mon, 12 May 2003 16:16:33 +0000
Subject: [PATCH] Make canreinvite globally applicable

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@1003 65c4cc65-6c06-0410-ace0-fbb531ad65f3
---
 channels/chan_sip.c | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/channels/chan_sip.c b/channels/chan_sip.c
index b4b391f7e2..35ae95ca77 100755
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -351,6 +351,8 @@ static struct sip_registry *registrations;
 
 static int sipsock  = -1;
 static int globalnat = 0;
+static int globalcanreinvite = REINVITE_INVITE;
+
 
 static struct sockaddr_in bindaddr;
 
@@ -1288,7 +1290,7 @@ static struct sip_pvt *sip_alloc(char *callid, struct sockaddr_in *sin, int useg
 	else
 		strncpy(p->callid, callid, sizeof(p->callid) - 1);
 	/* Assume reinvite OK and via INVITE */
-	p->canreinvite = REINVITE_INVITE;
+	p->canreinvite = globalcanreinvite;
 	p->dtmfmode = globaldtmfmode;
 	if (p->dtmfmode & SIP_DTMF_RFC2833)
 		p->noncodeccapability |= AST_RTP_DTMF;
@@ -5059,6 +5061,7 @@ static int reload_config(void)
 	strncpy(context, "default", sizeof(context) - 1);
 	strcpy(language, "");
 	strcpy(fromdomain, "");
+	globalcanreinvite = REINVITE_INVITE;
 	v = ast_variable_browse(cfg, "general");
 	while(v) {
 		/* Create the interface list */
@@ -5085,6 +5088,11 @@ static int reload_config(void)
 			strncpy(fromdomain, v->value, sizeof(fromdomain)-1);
 		} else if (!strcasecmp(v->name, "nat")) {
 			globalnat = ast_true(v->value);
+		} else if (!strcasecmp(v->name, "canreinvite")) {
+			if (!strcasecmp(v->value, "update"))
+				globalcanreinvite = REINVITE_UPDATE;
+			else
+				globalcanreinvite = ast_true(v->value);
 		} else if (!strcasecmp(v->name, "maxexpirey") || !strcasecmp(v->name, "maxexpiry")) {
 			max_expiry = atoi(v->value);
 			if (max_expiry < 1)
-- 
GitLab