Json::Value root = fetchJsonValue(
(g_settings->get("serverlist_url") + "/list").c_str(), NULL);
- std::vector<ServerListSpec> serverlist;
+ std::vector<ServerListSpec> server_list;
+
+ if (!root.isObject()) {
+ return server_list;
+ }
- if (root.isArray()) {
- for (unsigned int i = 0; i < root.size(); i++) {
- if (root[i].isObject()) {
- serverlist.push_back(root[i]);
- }
+ root = root["list"];
+ if (!root.isArray()) {
+ return server_list;
+ }
+
+ for (unsigned int i = 0; i < root.size(); i++) {
+ if (root[i].isObject()) {
+ server_list.push_back(root[i]);
}
}
- return serverlist;
+ return server_list;
}
#if USE_CURL
void sendAnnounce(const std::string &action,
+ const u16 port,
const std::vector<std::string> &clients_names,
const double uptime,
const u32 game_time,
const float lag,
const std::string &gameid,
+ const std::string &mg_name,
const std::vector<ModSpec> &mods)
{
Json::Value server;
server["action"] = action;
- server["port"] = g_settings->getU16("port");
+ server["port"] = port;
if (g_settings->exists("server_address")) {
server["address"] = g_settings->get("server_address");
}
if (action == "start") {
server["dedicated"] = g_settings->getBool("server_dedicated");
server["rollback"] = g_settings->getBool("enable_rollback_recording");
- server["mapgen"] = g_settings->get("mg_name");
+ server["mapgen"] = mg_name;
server["privs"] = g_settings->get("default_privs");
- server["can_see_far_names"] = g_settings->getBool("unlimited_player_transfer_distance");
+ server["can_see_far_names"] = g_settings->getS16("player_transfer_distance") <= 0;
server["mods"] = Json::Value(Json::arrayValue);
for (std::vector<ModSpec>::const_iterator it = mods.begin();
it != mods.end();
}
Json::FastWriter writer;
- HTTPFetchRequest fetchrequest;
- fetchrequest.url = g_settings->get("serverlist_url") + std::string("/announce");
- fetchrequest.post_fields["json"] = writer.write(server);
- fetchrequest.multipart = true;
- httpfetch_async(fetchrequest);
+ HTTPFetchRequest fetch_request;
+ fetch_request.url = g_settings->get("serverlist_url") + std::string("/announce");
+ fetch_request.post_fields["json"] = writer.write(server);
+ fetch_request.multipart = true;
+ httpfetch_async(fetch_request);
}
#endif