Skip to content

Commit

Permalink
rework ms list callback logic (#927)
Browse files Browse the repository at this point in the history
fixes crash when joining server before getting ms list back
  • Loading branch information
lambdcalculus authored Nov 30, 2023
1 parent e6e5e86 commit e9469a5
Show file tree
Hide file tree
Showing 4 changed files with 10 additions and 11 deletions.
5 changes: 2 additions & 3 deletions include/networkmanager.h
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ class NetworkManager : public QObject {
void server_connected(bool state);

public slots:
void get_server_list(const std::function<void()> &cb);
void get_server_list();
void ship_server_packet(QString p_packet);
void join_to_server();
void handle_server_packet(const QString& p_data);
Expand All @@ -64,8 +64,7 @@ public slots:
const std::function<void(QString)> &cb);
void send_heartbeat();
private slots:
void ms_request_finished(QNetworkReply *reply,
const std::function<void()> &cb);
void ms_request_finished(QNetworkReply *reply);

private:
QString get_user_agent() const {
Expand Down
2 changes: 1 addition & 1 deletion src/lobby.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -229,7 +229,7 @@ void Lobby::loadUI()

void Lobby::on_refresh_released()
{
net_manager->get_server_list(std::bind(&Lobby::list_servers, this));
net_manager->get_server_list();
get_motd();
list_favorites();
}
Expand Down
2 changes: 1 addition & 1 deletion src/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ int main(int argc, char *argv[])
main_app.installTranslator(&appTranslator);

main_app.construct_lobby();
main_app.net_manager->get_server_list(std::bind(&Lobby::list_servers, main_app.w_lobby));
main_app.net_manager->get_server_list();
main_app.net_manager->send_heartbeat();
main_app.w_lobby->show();
return main_app.exec();
Expand Down
12 changes: 6 additions & 6 deletions src/networkmanager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -29,18 +29,17 @@ NetworkManager::NetworkManager(AOApplication *parent) : QObject(parent)
heartbeat_timer->start(heartbeat_interval);
}

void NetworkManager::get_server_list(const std::function<void()> &cb)
void NetworkManager::get_server_list()
{
QNetworkRequest req(QUrl(ms_baseurl + "/servers"));
req.setRawHeader("User-Agent", get_user_agent().toUtf8());

QNetworkReply *reply = http->get(req);
connect(reply, &QNetworkReply::finished,
this, std::bind(&NetworkManager::ms_request_finished, this, reply, cb));
this, std::bind(&NetworkManager::ms_request_finished, this, reply));
}

void NetworkManager::ms_request_finished(QNetworkReply *reply,
const std::function<void()> &cb)
void NetworkManager::ms_request_finished(QNetworkReply *reply)
{
QJsonDocument json = QJsonDocument::fromJson(reply->readAll());
if (json.isNull()) {
Expand Down Expand Up @@ -72,8 +71,9 @@ void NetworkManager::ms_request_finished(QNetworkReply *reply,
}
ao_app->set_server_list(server_list);

cb();

if (ao_app->lobby_constructed) {
ao_app->w_lobby->list_servers();
}
reply->deleteLater();
}

Expand Down

0 comments on commit e9469a5

Please sign in to comment.