diff options
author | markster <markster@f38db490-d61c-443f-a65b-d21fe96a405b> | 2004-04-28 22:07:59 +0000 |
---|---|---|
committer | markster <markster@f38db490-d61c-443f-a65b-d21fe96a405b> | 2004-04-28 22:07:59 +0000 |
commit | 56a26c53fd122a0876aab2402a24722b0c4b57ad (patch) | |
tree | b9ee94c65541c047a7076632d58fa362504f2216 /channels/chan_iax2.c | |
parent | 9116ef0db45a5da262d36babf17b448d01b48d08 (diff) |
Fix potential seg in iax2 from reload when registrations are going
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@2807 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'channels/chan_iax2.c')
-rwxr-xr-x | channels/chan_iax2.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/channels/chan_iax2.c b/channels/chan_iax2.c index 1c11a0385..9cfb628f5 100755 --- a/channels/chan_iax2.c +++ b/channels/chan_iax2.c @@ -6076,8 +6076,18 @@ static void delete_users(void) for (reg = registrations;reg;) { regl = reg; reg = reg->next; - if (regl->expire > -1) + if (regl->expire > -1) { ast_sched_del(sched, regl->expire); + } + if (regl->callno) { + /* XXX Is this a potential lock? I don't think so, but you never know */ + ast_mutex_lock(&iaxsl[regl->callno]); + if (iaxs[regl->callno]) { + iaxs[regl->callno]->reg = NULL; + iax2_destroy_nolock(regl->callno); + } + ast_mutex_unlock(&iaxsl[regl->callno]); + } free(regl); } registrations = NULL; |