mirror of
https://github.com/overte-org/overte.git
synced 2025-08-10 13:33:27 +02:00
avoid a race that can cause metaverse to not have correct ice-server information about a domain
This commit is contained in:
parent
2b8765b47e
commit
9712301172
2 changed files with 25 additions and 0 deletions
|
@ -1278,6 +1278,13 @@ void DomainServer::handleMetaverseHeartbeatError(QNetworkReply& requestReply) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void DomainServer::sendICEServerAddressToMetaverseAPI() {
|
void DomainServer::sendICEServerAddressToMetaverseAPI() {
|
||||||
|
if (_sendICEServerAddressToMetaverseAPIInProgress) {
|
||||||
|
// don't have more than one of these in-flight at a time. set a flag to indicate that once the current one
|
||||||
|
// is done, we need to do update metaverse again.
|
||||||
|
_sendICEServerAddressToMetaverseAPIRedo = true;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
_sendICEServerAddressToMetaverseAPIInProgress = true;
|
||||||
const QString ICE_SERVER_ADDRESS = "ice_server_address";
|
const QString ICE_SERVER_ADDRESS = "ice_server_address";
|
||||||
|
|
||||||
QJsonObject domainObject;
|
QJsonObject domainObject;
|
||||||
|
@ -1302,6 +1309,8 @@ void DomainServer::sendICEServerAddressToMetaverseAPI() {
|
||||||
JSONCallbackParameters callbackParameters;
|
JSONCallbackParameters callbackParameters;
|
||||||
callbackParameters.errorCallbackReceiver = this;
|
callbackParameters.errorCallbackReceiver = this;
|
||||||
callbackParameters.errorCallbackMethod = "handleFailedICEServerAddressUpdate";
|
callbackParameters.errorCallbackMethod = "handleFailedICEServerAddressUpdate";
|
||||||
|
callbackParameters.jsonCallbackReceiver = this;
|
||||||
|
callbackParameters.jsonCallbackMethod = "handleSuccessfulICEServerAddressUpdate";
|
||||||
|
|
||||||
static QString repeatedMessage = LogHandler::getInstance().addOnlyOnceMessageRegex
|
static QString repeatedMessage = LogHandler::getInstance().addOnlyOnceMessageRegex
|
||||||
("Updating ice-server address in High Fidelity Metaverse API to [^ \n]+");
|
("Updating ice-server address in High Fidelity Metaverse API to [^ \n]+");
|
||||||
|
@ -1317,7 +1326,19 @@ void DomainServer::sendICEServerAddressToMetaverseAPI() {
|
||||||
domainUpdateJSON.toUtf8());
|
domainUpdateJSON.toUtf8());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void DomainServer::handleSuccessfulICEServerAddressUpdate(QNetworkReply& requestReply) {
|
||||||
|
_sendICEServerAddressToMetaverseAPIInProgress = false;
|
||||||
|
if (_sendICEServerAddressToMetaverseAPIRedo) {
|
||||||
|
qDebug() << "ice-server address updated with metaverse, but has since changed. redoing update...";
|
||||||
|
_sendICEServerAddressToMetaverseAPIRedo = false;
|
||||||
|
sendICEServerAddressToMetaverseAPI();
|
||||||
|
} else {
|
||||||
|
qDebug() << "ice-server address updated with metaverse.";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void DomainServer::handleFailedICEServerAddressUpdate(QNetworkReply& requestReply) {
|
void DomainServer::handleFailedICEServerAddressUpdate(QNetworkReply& requestReply) {
|
||||||
|
_sendICEServerAddressToMetaverseAPIInProgress = false;
|
||||||
const int ICE_SERVER_UPDATE_RETRY_MS = 2 * 1000;
|
const int ICE_SERVER_UPDATE_RETRY_MS = 2 * 1000;
|
||||||
|
|
||||||
qWarning() << "Failed to update ice-server address with High Fidelity Metaverse - error was" << requestReply.errorString();
|
qWarning() << "Failed to update ice-server address with High Fidelity Metaverse - error was" << requestReply.errorString();
|
||||||
|
|
|
@ -96,6 +96,7 @@ private slots:
|
||||||
void handleICEHostInfo(const QHostInfo& hostInfo);
|
void handleICEHostInfo(const QHostInfo& hostInfo);
|
||||||
|
|
||||||
void sendICEServerAddressToMetaverseAPI();
|
void sendICEServerAddressToMetaverseAPI();
|
||||||
|
void handleSuccessfulICEServerAddressUpdate(QNetworkReply& requestReply);
|
||||||
void handleFailedICEServerAddressUpdate(QNetworkReply& requestReply);
|
void handleFailedICEServerAddressUpdate(QNetworkReply& requestReply);
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
|
@ -211,6 +212,9 @@ private:
|
||||||
int _iceServerPort;
|
int _iceServerPort;
|
||||||
bool _overrideDomainID { false }; // should we override the domain-id from settings?
|
bool _overrideDomainID { false }; // should we override the domain-id from settings?
|
||||||
QUuid _overridingDomainID { QUuid() }; // what should we override it with?
|
QUuid _overridingDomainID { QUuid() }; // what should we override it with?
|
||||||
|
|
||||||
|
bool _sendICEServerAddressToMetaverseAPIInProgress { false };
|
||||||
|
bool _sendICEServerAddressToMetaverseAPIRedo { false };
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue