[Asterisk-cvs] asterisk/channels chan_iax2.c, 1.306, 1.307 chan_sip.c, 1.757, 1.758

kpfleming at lists.digium.com kpfleming at lists.digium.com
Thu Jun 9 17:09:24 CDT 2005


Update of /usr/cvsroot/asterisk/channels
In directory mongoose.digium.com:/tmp/cvs-serv31771/channels

Modified Files:
	chan_iax2.c chan_sip.c 
Log Message:
add 'rtignoreexpire' option to allow Realtime addresses to be used regardless of expiration time (bug #4362)


Index: chan_iax2.c
===================================================================
RCS file: /usr/cvsroot/asterisk/channels/chan_iax2.c,v
retrieving revision 1.306
retrieving revision 1.307
diff -u -d -r1.306 -r1.307
--- chan_iax2.c	9 Jun 2005 20:55:07 -0000	1.306
+++ chan_iax2.c	9 Jun 2005 21:11:30 -0000	1.307
@@ -239,6 +239,7 @@
 #define IAX_RTNOUPDATE 		(1 << 18) 	/* Don't send a realtime update */
 #define IAX_RTAUTOCLEAR 	(1 << 19) 	/* erase me on expire */ 
 #define IAX_FORCEJITTERBUF	(1 << 20)	/* Force jitterbuffer, even when bridged to a channel that can take jitter */ 
+#define IAX_RTIGNOREREGEXPIRE		(1 << 21)
 
 static int global_rtautoclear = 120;
 
@@ -2579,7 +2580,7 @@
 		ast_set_flag(peer, IAX_TEMPONLY);	
 	}
 
-	if (dynamic) {
+	if (!ast_test_flag(&globalflags, IAX_RTIGNOREREGEXPIRE) && dynamic) {
 		time(&nowtime);
 		if ((nowtime - regseconds) > IAX_DEFAULT_REG_EXPIRE) {
 			memset(&peer->addr, 0, sizeof(peer->addr));
@@ -8371,6 +8372,8 @@
 			ast_set2_flag((&globalflags), ast_true(v->value), IAX_MESSAGEDETAIL);	
 		else if (!strcasecmp(v->name, "rtcachefriends"))
 			ast_set2_flag((&globalflags), ast_true(v->value), IAX_RTCACHEFRIENDS);	
+		else if (!strcasecmp(v->name, "rtignoreregexpire"))
+			ast_set2_flag((&globalflags), ast_true(v->value), IAX_RTIGNOREREGEXPIRE);	
 		else if (!strcasecmp(v->name, "rtnoupdate"))
 			ast_set2_flag((&globalflags), ast_true(v->value), IAX_RTNOUPDATE);	
 		else if (!strcasecmp(v->name, "rtautoclear")) {

Index: chan_sip.c
===================================================================
RCS file: /usr/cvsroot/asterisk/channels/chan_sip.c,v
retrieving revision 1.757
retrieving revision 1.758
diff -u -d -r1.757 -r1.758
--- chan_sip.c	7 Jun 2005 17:06:33 -0000	1.757
+++ chan_sip.c	9 Jun 2005 21:11:30 -0000	1.758
@@ -400,6 +400,7 @@
 #define SIP_PAGE2_RTCACHEFRIENDS 	(1 << 0)
 #define SIP_PAGE2_RTNOUPDATE 		(1 << 1)
 #define SIP_PAGE2_RTAUTOCLEAR 		(1 << 2)
+#define SIP_PAGE2_RTIGNOREREGEXPIRE       (1 << 3)
 
 static int global_rtautoclear = 120;
 
@@ -5181,7 +5182,7 @@
 		p->expire = -1;
 	pvt->expiry = expiry;
 	snprintf(data, sizeof(data), "%s:%d:%d:%s:%s", ast_inet_ntoa(iabuf, sizeof(iabuf), p->addr.sin_addr), ntohs(p->addr.sin_port), expiry, p->username, p->fullcontact);
-	if (!ast_test_flag(p, SIP_REALTIME))
+	if (!(ast_test_flag(p, SIP_REALTIME) && ast_test_flag((&p->flags_page2), SIP_PAGE2_RTCACHEFRIENDS)))
 		ast_db_put("SIP/Registry", p->name, data);
 	manager_event(EVENT_FLAG_SYSTEM, "PeerStatus", "Peer: SIP/%s\r\nPeerStatus: Registered\r\n", p->name);
 	if (inaddrcmp(&p->addr, &oldsin)) {
@@ -10453,9 +10454,9 @@
 			peer->auth = add_realm_authentication(peer->auth, v->value, v->lineno);
 		else if (!strcasecmp(v->name, "callerid")) {
 			ast_callerid_split(v->value, peer->cid_name, sizeof(peer->cid_name), peer->cid_num, sizeof(peer->cid_num));
-		} else if (!strcasecmp(v->name, "context"))
+		} else if (!strcasecmp(v->name, "context")) {
 			ast_copy_string(peer->context, v->value, sizeof(peer->context));
-		else if (!strcasecmp(v->name, "fromdomain"))
+		} else if (!strcasecmp(v->name, "fromdomain"))
 			ast_copy_string(peer->fromdomain, v->value, sizeof(peer->fromdomain));
 		else if (!strcasecmp(v->name, "usereqphone"))
 			ast_set2_flag(peer, ast_true(v->value), SIP_USEREQPHONE);
@@ -10593,7 +10594,7 @@
 		 */
 		v=v->next;
 	}
-	if (realtime && ast_test_flag(peer, SIP_DYNAMIC)) {
+	if (realtime && !ast_test_flag((&global_flags_page2), SIP_PAGE2_RTIGNOREREGEXPIRE) && ast_test_flag(peer, SIP_DYNAMIC)) {
 		time_t nowtime;
 
 		time(&nowtime);
@@ -10707,6 +10708,8 @@
 			ast_set2_flag((&global_flags_page2), ast_true(v->value), SIP_PAGE2_RTCACHEFRIENDS);	
 		} else if (!strcasecmp(v->name, "rtnoupdate")) {
 			ast_set2_flag((&global_flags_page2), ast_true(v->value), SIP_PAGE2_RTNOUPDATE);	
+		} else if (!strcasecmp(v->name, "rtignoreregexpire")) {
+			ast_set2_flag((&global_flags_page2), ast_true(v->value), SIP_PAGE2_RTIGNOREREGEXPIRE);	
 		} else if (!strcasecmp(v->name, "rtautoclear")) {
 			int i = atoi(v->value);
 			if (i > 0)




More information about the svn-commits mailing list