diff options
Diffstat (limited to 'pjsip/src/pjsua-lib')
-rw-r--r-- | pjsip/src/pjsua-lib/pjsua_core.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/pjsip/src/pjsua-lib/pjsua_core.c b/pjsip/src/pjsua-lib/pjsua_core.c index d292122a..4538d841 100644 --- a/pjsip/src/pjsua-lib/pjsua_core.c +++ b/pjsip/src/pjsua-lib/pjsua_core.c @@ -1291,13 +1291,20 @@ PJ_DEF(pj_status_t) pjsua_destroy2(unsigned flags) { int i; /* Must be signed */ + PJ_LOG(4,(THIS_FILE, "Shutting down, flags=%d...", flags)); + /* Signal threads to quit: */ pjsua_var.thread_quit_flag = 1; /* Wait worker threads to quit: */ for (i=0; i<(int)pjsua_var.ua_cfg.thread_cnt; ++i) { if (pjsua_var.thread[i]) { - pj_thread_join(pjsua_var.thread[i]); + pj_status_t status; + status = pj_thread_join(pjsua_var.thread[i]); + if (status != PJ_SUCCESS) { + PJ_PERROR(4,(THIS_FILE, status, "Error joining worker thread")); + pj_thread_sleep(1000); + } pj_thread_destroy(pjsua_var.thread[i]); pjsua_var.thread[i] = NULL; } @@ -1306,8 +1313,6 @@ PJ_DEF(pj_status_t) pjsua_destroy2(unsigned flags) if (pjsua_var.endpt) { unsigned max_wait; - PJ_LOG(4,(THIS_FILE, "Shutting down, flags=%d...", flags)); - /* Terminate all calls. */ if ((flags & PJSUA_DESTROY_NO_TX_MSG) == 0) { pjsua_call_hangup_all(); |