diff options
author | markster <markster@f38db490-d61c-443f-a65b-d21fe96a405b> | 2004-02-06 18:11:13 +0000 |
---|---|---|
committer | markster <markster@f38db490-d61c-443f-a65b-d21fe96a405b> | 2004-02-06 18:11:13 +0000 |
commit | 687781a1f8453c67ea49717fcbbbfd7d46401142 (patch) | |
tree | c5c32e435000d2cd56796c08647746b2638f74ae | |
parent | c482188fb81fe9224dcfa08df7f07d89ca4cde4c (diff) |
Don't free private structure until iax2_hangup is actually called
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@2136 f38db490-d61c-443f-a65b-d21fe96a405b
-rwxr-xr-x | channels/chan_iax2.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/channels/chan_iax2.c b/channels/chan_iax2.c index 8ffd12037..e24f618be 100755 --- a/channels/chan_iax2.c +++ b/channels/chan_iax2.c @@ -1038,9 +1038,11 @@ retry: goto retry; } } - iaxs[callno] = NULL; + if (!owner) + iaxs[callno] = NULL; if (pvt) { - pvt->owner = NULL; + if (!owner) + pvt->owner = NULL; /* No more pings or lagrq's */ if (pvt->pingid > -1) ast_sched_del(sched, pvt->pingid); @@ -1063,7 +1065,6 @@ retry: if (owner) { /* If there's an owner, prod it to give up */ - owner->pvt->pvt = NULL; owner->_softhangup |= AST_SOFTHANGUP_DEV; ast_queue_hangup(owner, 0); } @@ -1076,7 +1077,8 @@ retry: if (pvt->reg) { pvt->reg->callno = 0; } - free(pvt); + if (!owner) + free(pvt); } if (owner) { ast_mutex_unlock(&owner->lock); |