summaryrefslogtreecommitdiff
path: root/src/serverlist.cpp
diff options
context:
space:
mode:
authorproller <proller@github.com>2014-01-07 02:50:45 +0400
committerproller <proller@github.com>2014-01-07 02:50:45 +0400
commitc62bab010fcf2b4b93af1cf0b71d4d0dbf78fed8 (patch)
treeebc099dab9ded4535351b3ef3115ca593c48d482 /src/serverlist.cpp
parent3e728e722a788350718046daaf36f9a9c14ef1d1 (diff)
downloadminetest-c62bab010fcf2b4b93af1cf0b71d4d0dbf78fed8.tar.gz
minetest-c62bab010fcf2b4b93af1cf0b71d4d0dbf78fed8.tar.bz2
minetest-c62bab010fcf2b4b93af1cf0b71d4d0dbf78fed8.zip
Send long announce as POST, show OS in useragent
Add lag reporting to masterserver (average dtime) StyledWriter -> FastWriter in masterserver announce
Diffstat (limited to 'src/serverlist.cpp')
-rw-r--r--src/serverlist.cpp19
1 files changed, 11 insertions, 8 deletions
diff --git a/src/serverlist.cpp b/src/serverlist.cpp
index 204427f88..2c475cbc0 100644
--- a/src/serverlist.cpp
+++ b/src/serverlist.cpp
@@ -188,7 +188,7 @@ std::string serializeJson(std::vector<ServerListSpec> serverlist)
#if USE_CURL
-void sendAnnounce(std::string action, const std::vector<std::string> & clients_names, double uptime, u32 game_time, std::string gameid, std::vector<ModSpec> mods) {
+void sendAnnounce(std::string action, const std::vector<std::string> & clients_names, double uptime, u32 game_time, float lag, std::string gameid, std::vector<ModSpec> mods) {
Json::Value server;
if (action.size())
server["action"] = action;
@@ -226,16 +226,19 @@ void sendAnnounce(std::string action, const std::vector<std::string> & clients_n
server["mods"].append(m->name);
}
actionstream << "announcing to " << g_settings->get("serverlist_url") << std::endl;
+ } else {
+ if (lag)
+ server["step"] = lag;
}
- Json::StyledWriter writer;
+ Json::FastWriter writer;
HTTPFetchRequest fetchrequest;
- fetchrequest.url = g_settings->get("serverlist_url")
- + std::string("/announce?json=")
- + urlencode(writer.write(server));
- fetchrequest.useragent = std::string("Minetest ")+minetest_version_hash;
- fetchrequest.caller = HTTPFETCH_DISCARD;
- fetchrequest.timeout = g_settings->getS32("curl_timeout");
+ fetchrequest.url = g_settings->get("serverlist_url") + std::string("/announce");
+ std::string query = std::string("json=") + urlencode(writer.write(server));
+ if (query.size() < 1000)
+ fetchrequest.url += "?" + query;
+ else
+ fetchrequest.post_fields = query;
httpfetch_async(fetchrequest);
}
#endif