diff options
author | Richard Mudgett <rmudgett@digium.com> | 2014-09-25 21:03:51 +0000 |
---|---|---|
committer | Richard Mudgett <rmudgett@digium.com> | 2014-09-25 21:03:51 +0000 |
commit | fa0c33ebc11f91fccc649cb1819196b8524bc082 (patch) | |
tree | cba805465bfac4b9d145a99e23e8708732448269 /res/res_pjsip.c | |
parent | d172d84fe146ce004e61fead3aa6149196f4edef (diff) |
res_pjsip.c: Add missing off nominal cleanup in ast_sip_push_task_synchronous().
* Made memset the std struct in ast_sip_push_task_synchronous() because if
DEBUG_THREADS is enabled then uninitialized lock tracking data is used.
........
Merged revisions 423894 from http://svn.asterisk.org/svn/asterisk/branches/12
........
Merged revisions 423895 from http://svn.asterisk.org/svn/asterisk/branches/13
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@423896 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'res/res_pjsip.c')
-rw-r--r-- | res/res_pjsip.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/res/res_pjsip.c b/res/res_pjsip.c index 87a1c82f2..b87be9140 100644 --- a/res/res_pjsip.c +++ b/res/res_pjsip.c @@ -2786,18 +2786,22 @@ int ast_sip_push_task_synchronous(struct ast_taskprocessor *serializer, int (*si return sip_task(task_data); } + memset(&std, 0, sizeof(std)); ast_mutex_init(&std.lock); ast_cond_init(&std.cond, NULL); - std.fail = std.complete = 0; std.task = sip_task; std.task_data = task_data; if (serializer) { if (ast_taskprocessor_push(serializer, sync_task, &std)) { + ast_mutex_destroy(&std.lock); + ast_cond_destroy(&std.cond); return -1; } } else { if (ast_threadpool_push(sip_threadpool, sync_task, &std)) { + ast_mutex_destroy(&std.lock); + ast_cond_destroy(&std.cond); return -1; } } |