diff options
Diffstat (limited to 'res/res_pjsip.c')
-rw-r--r-- | res/res_pjsip.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/res/res_pjsip.c b/res/res_pjsip.c index 133546126..20ac7a03e 100644 --- a/res/res_pjsip.c +++ b/res/res_pjsip.c @@ -2975,6 +2975,12 @@ static int sync_task(void *data) std->fail = std->task(std->task_data); + /* + * Once we unlock std->lock after signaling, we cannot access + * std again. The thread waiting within + * ast_sip_push_task_synchronous() is free to continue and + * release its local variable (std). + */ ast_mutex_lock(&std->lock); std->complete = 1; ast_cond_signal(&std->cond); |