diff --git a/res/res_pjsip_outbound_publish.c b/res/res_pjsip_outbound_publish.c index 8b6f6e4..de3f9b8 100644 --- a/res/res_pjsip_outbound_publish.c +++ b/res/res_pjsip_outbound_publish.c @@ -1170,7 +1170,19 @@ static int unload_module(void) ast_verb(5, "Waiting to complete unpublishing task(s)\n"); while (unloading.count) { res = ast_cond_timedwait(&unloading.cond, &unloading.lock, &end); + if (res) { + /* Timed out waiting for the count to reach zero. */ + break; + } } + unloading.is_unloading = 0; + ast_mutex_unlock(&unloading.lock); + + /* + * Toggle locking in case something was waiting for us to + * release the lock in order to decrement the unloading.count. + */ + ast_mutex_lock(&unloading.lock); ast_mutex_unlock(&unloading.lock); ast_mutex_destroy(&unloading.lock);