summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--indra/newview/llvoicevivox.cpp46
1 files changed, 24 insertions, 22 deletions
diff --git a/indra/newview/llvoicevivox.cpp b/indra/newview/llvoicevivox.cpp
index d14a0f983c..76fd86d87b 100644
--- a/indra/newview/llvoicevivox.cpp
+++ b/indra/newview/llvoicevivox.cpp
@@ -95,7 +95,6 @@ namespace {
const F32 LOGIN_ATTEMPT_TIMEOUT = 30.0f;
const int LOGIN_RETRY_MAX = 3;
- const F32 LOGIN_RETRY_BACKOFF = 10.0f;
const int PROVISION_RETRY_MAX = 5;
const F32 PROVISION_RETRY_TIMEOUT = 2.0;
@@ -488,16 +487,12 @@ bool LLVivoxVoiceClient::writeString(const std::string &str)
void LLVivoxVoiceClient::connectorCreate()
{
std::ostringstream stream;
- std::string logpath = gDirUtilp->getExpandedFilename(LL_PATH_LOGS, "");
- std::string loglevel = "0";
+ std::string logdir = gDirUtilp->getExpandedFilename(LL_PATH_LOGS, "");
// Transition to stateConnectorStarted when the connector handle comes back.
- std::string savedLogLevel = gSavedSettings.getString("VivoxDebugLevel");
+ std::string vivoxLogLevel = gSavedSettings.getString("VivoxDebugLevel", "0");
- if(savedLogLevel != "0")
- {
- LL_DEBUGS("Voice") << "creating connector with logging enabled" << LL_ENDL;
- }
+ LL_DEBUGS("Voice") << "creating connector with log level " << vivoxLogLevel << LL_ENDL;
stream
<< "<Request requestId=\"" << mCommandCookie++ << "\" action=\"Connector.Create.1\">"
@@ -506,10 +501,10 @@ void LLVivoxVoiceClient::connectorCreate()
<< "<Mode>Normal</Mode>"
<< "<ConnectorHandle>" << LLVivoxSecurity::getInstance()->connectorHandle() << "</ConnectorHandle>"
<< "<Logging>"
- << "<Folder>" << logpath << "</Folder>"
+ << "<Folder>" << logdir << "</Folder>"
<< "<FileNamePrefix>Connector</FileNamePrefix>"
<< "<FileNameSuffix>.log</FileNameSuffix>"
- << "<LogLevel>" << loglevel << "</LogLevel>"
+ << "<LogLevel>" << vivoxLogLevel << "</LogLevel>"
<< "</Logging>"
<< "<Application>" << LLVersionInfo::getChannel().c_str() << " " << LLVersionInfo::getVersion().c_str() << "</Application>"
//<< "<Application></Application>" //Name can cause problems per vivox.
@@ -739,12 +734,7 @@ bool LLVivoxVoiceClient::startAndLaunchDaemon()
LLProcess::Params params;
params.executable = exe_path;
- std::string loglevel = gSavedSettings.getString("VivoxDebugLevel");
- std::string shutdown_timeout = gSavedSettings.getString("VivoxShutdownTimeout");
- if (loglevel.empty())
- {
- loglevel = "-1"; // turn logging off completely, was 0 for error level logging.
- }
+ std::string loglevel = gSavedSettings.getString("VivoxDebugLevel", "0");
params.args.add("-ll");
params.args.add(loglevel);
@@ -759,6 +749,7 @@ bool LLVivoxVoiceClient::startAndLaunchDaemon()
params.args.add("-lf");
params.args.add(log_folder);
+ std::string shutdown_timeout = gSavedSettings.getString("VivoxShutdownTimeout");
if (!shutdown_timeout.empty())
{
params.args.add("-st");
@@ -966,6 +957,10 @@ bool LLVivoxVoiceClient::establishVoiceConnection()
{
connected = false;
}
+ else if (!connected)
+ {
+ LLNotificationsUtil::add("NoVoiceConnectFinal", args);
+ }
return connected;
}
@@ -1047,19 +1042,26 @@ bool LLVivoxVoiceClient::loginToVivox()
LLSD args;
args["HOSTID"] = LLURI(mVoiceAccountServerURI).authority();
mTerminateDaemon = true;
- LLNotificationsUtil::add("NoVoiceConnect", args);
+ LLNotificationsUtil::add("NoVoiceConnectFinal", args);
mIsLoggingIn = false;
return false;
}
-
response_ok = false;
account_login = false;
send_login = true;
- F32 timeout = pow(LOGIN_RETRY_BACKOFF, static_cast<float>(loginRetryCount)) - 1.0f;
+ // an exponential backoff gets too long too quickly; stretch it out, but not too much
+ F32 timeout = loginRetryCount * LOGIN_ATTEMPT_TIMEOUT;
+
+ // tell the user there is a problem
+ LL_WARNS("Voice") << "login " << loginresp << " will retry login in " << timeout << " seconds." << LL_ENDL;
- LL_INFOS("Voice") << "will retry login in " << timeout << " seconds." << LL_ENDL;
+ LLSD args;
+ args["HOSTID"] = LLURI(mVoiceAccountServerURI).authority();
+ args["RETRY"] = int(timeout);
+ LLNotificationsUtil::add("NoVoiceConnectTrying", args);
+
llcoro::suspendUntilTimeout(timeout);
}
else if (loginresp == "failed")
@@ -1951,7 +1953,8 @@ void LLVivoxVoiceClient::loginSendMessage()
<< "<ParticipantPropertyFrequency>5</ParticipantPropertyFrequency>"
<< (autoPostCrashDumps?"<AutopostCrashDumps>true</AutopostCrashDumps>":"")
<< "</Request>\n\n\n";
-
+
+ LL_DEBUGS("Voice") << "sending login request" << LL_ENDL;
writeString(stream.str());
}
@@ -2939,7 +2942,6 @@ void LLVivoxVoiceClient::connectorCreateResponse(int statusCode, std::string &st
LLSD args;
args["HOSTID"] = LLURI(mVoiceAccountServerURI).authority();
mTerminateDaemon = true;
- LLNotificationsUtil::add("NoVoiceConnect", args);
result["connector"] = LLSD::Boolean(false);
}