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) {
|
void McResolver::emitFail(std::string error) {
|
||||||
qDebug() << "Ping error:" << QString::fromStdString(error);
|
qDebug() << "Ping error:" << QString::fromStdString(error);
|
||||||
emit fail();
|
emit fail();
|
||||||
|
emit finish();
|
||||||
}
|
}
|
||||||
|
|
||||||
void McResolver::emitSucceed(QString ip, int port) {
|
void McResolver::emitSucceed(QString ip, int port) {
|
||||||
emit succeed(ip, port);
|
emit succeed(ip, port);
|
||||||
|
emit finish();
|
||||||
}
|
}
|
||||||
|
@ -24,4 +24,5 @@ private:
|
|||||||
signals:
|
signals:
|
||||||
void succeed(QString ip, int port);
|
void succeed(QString ip, int port);
|
||||||
void fail();
|
void fail();
|
||||||
|
void finish();
|
||||||
};
|
};
|
||||||
|
@ -139,13 +139,15 @@ class ServerPingTask : public Task {
|
|||||||
protected:
|
protected:
|
||||||
virtual void executeTask() override {
|
virtual void executeTask() override {
|
||||||
qDebug() << "Querying status of " << m_server.m_address;
|
qDebug() << "Querying status of " << m_server.m_address;
|
||||||
|
|
||||||
|
// Resolve the actual IP and port for the server
|
||||||
auto [domain, port] = m_server.splitAddress();
|
auto [domain, port] = m_server.splitAddress();
|
||||||
McResolver *resolver = new McResolver(nullptr, domain, port);
|
McResolver *resolver = new McResolver(nullptr, domain, port);
|
||||||
QObject::connect(resolver, &McResolver::succeed, [this, resolver, domain](QString ip, int port) {
|
QObject::connect(resolver, &McResolver::succeed, [this, resolver, domain](QString ip, int port) {
|
||||||
resolver->deleteLater();
|
|
||||||
qDebug() << "Resolved Addresse for" << domain << ": " << ip << ":" << port;
|
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 {
|
try {
|
||||||
int online = client.getOnlinePlayers();
|
int online = client.getOnlinePlayers();
|
||||||
qDebug() << "Online players: " << online;
|
qDebug() << "Online players: " << online;
|
||||||
@ -156,6 +158,11 @@ class ServerPingTask : public Task {
|
|||||||
emitFailed(e.cause());
|
emitFailed(e.cause());
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Delete McResolver object when done
|
||||||
|
QObject::connect(resolver, &McResolver::finish, [resolver]() {
|
||||||
|
resolver->deleteLater();
|
||||||
|
});
|
||||||
resolver->ping();
|
resolver->ping();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user