Make use of the temporary channel pointer while the pvt is unlocked.

(closes issue #11675)
Reported by: flefoll
Patches:
      chan_zap.c.patch-store-owner-before-unlock uploaded by flefoll (license 244)


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@96449 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
Russell Bryant
2008-01-04 16:19:22 +00:00
parent 6ae86ec183
commit 6787783ce5

View File

@@ -8954,7 +8954,7 @@ static void *pri_dchannel(void *vpri)
if (!ast_strlen_zero(e->ringing.useruserinfo)) {
struct ast_channel *owner = pri->pvts[chanpos]->owner;
ast_mutex_unlock(&pri->pvts[chanpos]->lock);
pbx_builtin_setvar_helper(pri->pvts[chanpos]->owner, "USERUSERINFO", e->ringing.useruserinfo);
pbx_builtin_setvar_helper(owner, "USERUSERINFO", e->ringing.useruserinfo);
ast_mutex_lock(&pri->pvts[chanpos]->lock);
}
#endif
@@ -9112,7 +9112,7 @@ static void *pri_dchannel(void *vpri)
if (!ast_strlen_zero(e->answer.useruserinfo)) {
struct ast_channel *owner = pri->pvts[chanpos]->owner;
ast_mutex_unlock(&pri->pvts[chanpos]->lock);
pbx_builtin_setvar_helper(pri->pvts[chanpos]->owner, "USERUSERINFO", e->answer.useruserinfo);
pbx_builtin_setvar_helper(owner, "USERUSERINFO", e->answer.useruserinfo);
ast_mutex_lock(&pri->pvts[chanpos]->lock);
}
#endif
@@ -9181,7 +9181,7 @@ static void *pri_dchannel(void *vpri)
if (pri->pvts[chanpos]->owner && !ast_strlen_zero(e->hangup.useruserinfo)) {
struct ast_channel *owner = pri->pvts[chanpos]->owner;
ast_mutex_unlock(&pri->pvts[chanpos]->lock);
pbx_builtin_setvar_helper(pri->pvts[chanpos]->owner, "USERUSERINFO", e->hangup.useruserinfo);
pbx_builtin_setvar_helper(owner, "USERUSERINFO", e->hangup.useruserinfo);
ast_mutex_lock(&pri->pvts[chanpos]->lock);
}
#endif
@@ -9250,7 +9250,7 @@ static void *pri_dchannel(void *vpri)
if (!ast_strlen_zero(e->hangup.useruserinfo)) {
struct ast_channel *owner = pri->pvts[chanpos]->owner;
ast_mutex_unlock(&pri->pvts[chanpos]->lock);
pbx_builtin_setvar_helper(pri->pvts[chanpos]->owner, "USERUSERINFO", e->hangup.useruserinfo);
pbx_builtin_setvar_helper(owner, "USERUSERINFO", e->hangup.useruserinfo);
ast_mutex_lock(&pri->pvts[chanpos]->lock);
}
#endif
@@ -9281,7 +9281,7 @@ static void *pri_dchannel(void *vpri)
if (!ast_strlen_zero(e->hangup.useruserinfo)) {
struct ast_channel *owner = pri->pvts[chanpos]->owner;
ast_mutex_unlock(&pri->pvts[chanpos]->lock);
pbx_builtin_setvar_helper(pri->pvts[chanpos]->owner, "USERUSERINFO", e->hangup.useruserinfo);
pbx_builtin_setvar_helper(owner, "USERUSERINFO", e->hangup.useruserinfo);
ast_mutex_lock(&pri->pvts[chanpos]->lock);
}
#endif