[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