X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=src%2Fserverlist.cpp;h=18264e933cce2f8f5e0032b1f00d10b9668f7c58;hb=d961ece144c239a61ff46d830041249867656e9c;hp=a59a893699218e873e5f670c4aa705daeea34ae0;hpb=ee9a442ecc26f2623a1b085344d37636342973eb;p=oweals%2Fminetest.git diff --git a/src/serverlist.cpp b/src/serverlist.cpp index a59a89369..18264e933 100644 --- a/src/serverlist.cpp +++ b/src/serverlist.cpp @@ -155,6 +155,16 @@ std::vector deSerialize(const std::string &liststring) server["address"] = tmp; std::getline(stream, tmp); server["port"] = tmp; + bool unique = true; + for (const ServerListSpec &added : serverlist) { + if (server["name"] == added["name"] + && server["port"] == added["port"]) { + unique = false; + break; + } + } + if (!unique) + continue; std::getline(stream, tmp); server["description"] = tmp; serverlist.push_back(server); @@ -185,8 +195,8 @@ const std::string serializeJson(const std::vector &serverlist) list.append(it); } root["list"] = list; - Json::FastWriter writer; - return writer.write(root); + + return fastWriteJson(root); } @@ -249,10 +259,9 @@ void sendAnnounce(AnnounceAction action, server["lag"] = lag; } - Json::FastWriter writer; HTTPFetchRequest fetch_request; fetch_request.url = g_settings->get("serverlist_url") + std::string("/announce"); - fetch_request.post_fields["json"] = writer.write(server); + fetch_request.post_fields["json"] = fastWriteJson(server); fetch_request.multipart = true; httpfetch_async(fetch_request); }