From 9451b50b2b855d6de6cc7141428575c06f46aeb0 Mon Sep 17 00:00:00 2001 From: Andrey Kleshchev Date: Wed, 23 Jun 2021 19:48:45 +0300 Subject: SL-15292 waitForChannel crash #4 --- indra/newview/llvoicevivox.cpp | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) (limited to 'indra') diff --git a/indra/newview/llvoicevivox.cpp b/indra/newview/llvoicevivox.cpp index d63a6fb1da..4d2eac8c09 100644 --- a/indra/newview/llvoicevivox.cpp +++ b/indra/newview/llvoicevivox.cpp @@ -703,7 +703,10 @@ void LLVivoxVoiceClient::voiceControlCoro() performMicTuning(); } - waitForChannel(); // this doesn't normally return unless relog is needed or shutting down + if (!sShuttingDown) + { + waitForChannel(); // this doesn't normally return unless relog is needed or shutting down + } LL_DEBUGS("Voice") << "lost channel RelogRequested=" << mRelogRequested << LL_ENDL; endAndDisconnectSession(); @@ -1045,7 +1048,14 @@ bool LLVivoxVoiceClient::provisionVoiceAccount() { F32 timeout = pow(PROVISION_RETRY_TIMEOUT, static_cast(retryCount)); LL_WARNS("Voice") << "Provision CAP 404. Retrying in " << timeout << " seconds." << LL_ENDL; - llcoro::suspendUntilTimeout(timeout); + if (sShuttingDown) + { + return false; + } + else + { + llcoro::suspendUntilTimeout(timeout); + } } else if (!status) { @@ -1275,6 +1285,8 @@ bool LLVivoxVoiceClient::loginToVivox() if (!sShuttingDown) { + // Todo: this is way to long, viewer can get stuck waiting during shutdown + // either make it listen to pump or split in smaller waits with checks for shutdown llcoro::suspendUntilTimeout(timeout); } } -- cgit v1.2.3