From e7b18536c439ce5725fefb70910cb9c30ed959c5 Mon Sep 17 00:00:00 2001
From: Mark Spencer <markster@digium.com>
Date: Thu, 24 Mar 2005 05:02:49 +0000
Subject: [PATCH] Fix SIP/IAX caching (bug #3671)

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@5249 65c4cc65-6c06-0410-ace0-fbb531ad65f3
---
 channels/chan_iax2.c | 6 +++++-
 channels/chan_sip.c  | 3 +++
 2 files changed, 8 insertions(+), 1 deletion(-)

diff --git a/channels/chan_iax2.c b/channels/chan_iax2.c
index 1aa9085311..6c852cf018 100755
--- a/channels/chan_iax2.c
+++ b/channels/chan_iax2.c
@@ -2566,8 +2566,12 @@ static struct iax2_peer *realtime_peer(const char *peername)
 				peerl.peers = peer;
 				ast_mutex_unlock(&peerl.lock);
 				ast_copy_flags(peer, &globalflags, IAX_RTAUTOCLEAR|IAX_RTCACHEFRIENDS);
-				if (ast_test_flag(peer, IAX_RTAUTOCLEAR))
+				if (ast_test_flag(peer, IAX_RTAUTOCLEAR)) {
+					if (peer->expire > -1) {
+						ast_sched_del(sched, peer->expire);
+					}
 					peer->expire = ast_sched_add(sched, (global_rtautoclear) * 1000, expire_registry, (void *)peer);
+				}
 			} else {
 		    		ast_set_flag(peer, IAX_TEMPONLY);	
 			}
diff --git a/channels/chan_sip.c b/channels/chan_sip.c
index 5704a10f1f..236b5bad5b 100755
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -1292,6 +1292,9 @@ static struct sip_peer *realtime_peer(const char *peername, struct sockaddr_in *
 			if(ast_test_flag((&global_flags_page2), SIP_PAGE2_RTCACHEFRIENDS)) {
 				ast_copy_flags((&peer->flags_page2),(&global_flags_page2), SIP_PAGE2_RTAUTOCLEAR|SIP_PAGE2_RTCACHEFRIENDS);
 				if(ast_test_flag((&global_flags_page2), SIP_PAGE2_RTAUTOCLEAR)) {
+					if (peer->expire > -1) {
+						ast_sched_del(sched, peer->expire);
+					}
 					peer->expire = ast_sched_add(sched, (global_rtautoclear) * 1000, expire_register, (void *)peer);
 				}
 				ASTOBJ_CONTAINER_LINK(&peerl,peer);
-- 
GitLab