diff --git a/channels/chan_iax2.c b/channels/chan_iax2.c
index 1aa9085311a394117e534bc173f13fb79d6c6eea..6c852cf018600bef87b284618f2734162d6db8c7 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 5704a10f1ffc044f417aac5485fcc6e1e95c931a..236b5bad5b43d34bfd541236d75c529a87e303f5 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);