diff options
author | est31 <MTest31@outlook.com> | 2016-01-28 23:53:58 +0100 |
---|---|---|
committer | est31 <MTest31@outlook.com> | 2016-01-28 23:53:58 +0100 |
commit | 860d70bd0e228ee542e3e559961bfc7e56888d77 (patch) | |
tree | 61e29746f8e88acfdb6beb3a90ed6782e97d6ca4 | |
parent | e52ebda8b2273bbd80573838d6dbafb31ee2cd2b (diff) | |
download | minetest-860d70bd0e228ee542e3e559961bfc7e56888d77.tar.gz minetest-860d70bd0e228ee542e3e559961bfc7e56888d77.tar.bz2 minetest-860d70bd0e228ee542e3e559961bfc7e56888d77.zip |
Don't print whole json data buffer to errorstream on error
`errorstream` must not be overly verbose as clientside it is directly printed
onto the ingame chat window. These days, the serverlist can contain > 200k bytes,
so better print it to warningstream if the data buffer is too long.
-rw-r--r-- | src/convert_json.cpp | 8 | ||||
-rw-r--r-- | src/script/lua_api/l_util.cpp | 10 |
2 files changed, 15 insertions, 3 deletions
diff --git a/src/convert_json.cpp b/src/convert_json.cpp index e03508e21..e548c45f5 100644 --- a/src/convert_json.cpp +++ b/src/convert_json.cpp @@ -52,7 +52,13 @@ Json::Value fetchJsonValue(const std::string &url, if (!reader.parse(stream, root)) { errorstream << "URL: " << url << std::endl; errorstream << "Failed to parse json data " << reader.getFormattedErrorMessages(); - errorstream << "data: \"" << fetch_result.data << "\"" << std::endl; + if (fetch_result.data.size() > 100) { + errorstream << "Data (" << fetch_result.data.size() + << " bytes) printed to warningstream." << std::endl; + warningstream << "data: \"" << fetch_result.data << "\"" << std::endl; + } else { + errorstream << "data: \"" << fetch_result.data << "\"" << std::endl; + } return Json::Value(); } diff --git a/src/script/lua_api/l_util.cpp b/src/script/lua_api/l_util.cpp index 3f7e15acf..39863b987 100644 --- a/src/script/lua_api/l_util.cpp +++ b/src/script/lua_api/l_util.cpp @@ -161,8 +161,14 @@ int ModApiUtil::l_parse_json(lua_State *L) if (!reader.parse(stream, root)) { errorstream << "Failed to parse json data " << reader.getFormattedErrorMessages(); - errorstream << "data: \"" << jsonstr << "\"" - << std::endl; + size_t jlen = strlen(jsonstr); + if (jlen > 100) { + errorstream << "Data (" << jlen + << " bytes) printed to warningstream." << std::endl; + warningstream << "data: \"" << jsonstr << "\"" << std::endl; + } else { + errorstream << "data: \"" << jsonstr << "\"" << std::endl; + } lua_pushnil(L); return 1; } |