diff options
author | markster <markster@f38db490-d61c-443f-a65b-d21fe96a405b> | 2005-03-24 05:02:49 +0000 |
---|---|---|
committer | markster <markster@f38db490-d61c-443f-a65b-d21fe96a405b> | 2005-03-24 05:02:49 +0000 |
commit | f203c9dcf6099c5efc58c34475aee26144b4ef68 (patch) | |
tree | 4a580424822c9bbdf4f7a6be482306261c28c6f6 /channels | |
parent | 3139c0e05c5606c94c149ebe52b3b72df9fb874d (diff) |
Fix SIP/IAX caching (bug #3671)
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@5249 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'channels')
-rwxr-xr-x | channels/chan_iax2.c | 6 | ||||
-rwxr-xr-x | channels/chan_sip.c | 3 |
2 files changed, 8 insertions, 1 deletions
diff --git a/channels/chan_iax2.c b/channels/chan_iax2.c index 1aa908531..6c852cf01 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 5704a10f1..236b5bad5 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); |