aboutsummaryrefslogtreecommitdiffstats
path: root/channels/chan_iax2.c
diff options
context:
space:
mode:
authormarkster <markster@f38db490-d61c-443f-a65b-d21fe96a405b>2004-04-28 22:07:59 +0000
committermarkster <markster@f38db490-d61c-443f-a65b-d21fe96a405b>2004-04-28 22:07:59 +0000
commit56a26c53fd122a0876aab2402a24722b0c4b57ad (patch)
treeb9ee94c65541c047a7076632d58fa362504f2216 /channels/chan_iax2.c
parent9116ef0db45a5da262d36babf17b448d01b48d08 (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-xchannels/chan_iax2.c12
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;