mirror of
https://github.com/PrismLauncher/PrismLauncher.git
synced 2025-05-29 05:10:20 +02:00
always delete McResolver object, even when it fails
This commit is contained in:
parent
0c6f78dee2
commit
7c8d2c9b55
@ -65,8 +65,10 @@ void McResolver::pingWithDomainA(QString domain, int port) {
|
||||
void McResolver::emitFail(std::string error) {
|
||||
qDebug() << "Ping error:" << QString::fromStdString(error);
|
||||
emit fail();
|
||||
emit finish();
|
||||
}
|
||||
|
||||
void McResolver::emitSucceed(QString ip, int port) {
|
||||
emit succeed(ip, port);
|
||||
emit finish();
|
||||
}
|
||||
|
@ -24,4 +24,5 @@ private:
|
||||
signals:
|
||||
void succeed(QString ip, int port);
|
||||
void fail();
|
||||
void finish();
|
||||
};
|
||||
|
@ -139,13 +139,15 @@ class ServerPingTask : public Task {
|
||||
protected:
|
||||
virtual void executeTask() override {
|
||||
qDebug() << "Querying status of " << m_server.m_address;
|
||||
|
||||
// Resolve the actual IP and port for the server
|
||||
auto [domain, port] = m_server.splitAddress();
|
||||
McResolver *resolver = new McResolver(nullptr, domain, port);
|
||||
QObject::connect(resolver, &McResolver::succeed, [this, resolver, domain](QString ip, int port) {
|
||||
resolver->deleteLater();
|
||||
qDebug() << "Resolved Addresse for" << domain << ": " << ip << ":" << port;
|
||||
McClient client(nullptr, domain, ip, port);
|
||||
|
||||
// Now that we have the IP and port, query the server
|
||||
McClient client(nullptr, domain, ip, port);
|
||||
try {
|
||||
int online = client.getOnlinePlayers();
|
||||
qDebug() << "Online players: " << online;
|
||||
@ -156,6 +158,11 @@ class ServerPingTask : public Task {
|
||||
emitFailed(e.cause());
|
||||
}
|
||||
});
|
||||
|
||||
// Delete McResolver object when done
|
||||
QObject::connect(resolver, &McResolver::finish, [resolver]() {
|
||||
resolver->deleteLater();
|
||||
});
|
||||
resolver->ping();
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user