Merge pull request #3378 from myk002/myk_remote_server

[RemoteServer] fix crash on malformed json
develop
Myk 2023-05-17 10:27:08 -07:00 committed by GitHub
commit 2e1aae31a8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 17 additions and 9 deletions

@ -44,6 +44,7 @@ changelog.txt uses a syntax similar to RST, with a few special sequences:
- `work-now`: reinstated, renamed from ``workNow``: reduce the time that dwarves are left without a task after completing a job
## Fixes
- RemoteServer: fix crash on malformed json in ``dfhack-config/remote-server.json``
- `autolabor`: work detail override warning now only appears on the work details screen
## Misc Improvements

@ -150,7 +150,11 @@ int RemoteClient::GetDefaultPort()
if (in_file)
{
Json::Value config;
try {
in_file >> config;
} catch (const std::exception & e) {
std::cerr << "Error reading remote server config file: " << filename << ": " << e.what() << std::endl;
}
in_file.close();
if (config.isMember("port")) {
port = config["port"].asInt();

@ -420,17 +420,20 @@ ServerMainImpl::ServerMainImpl(std::promise<bool> promise, int port) :
Json::Value configJson;
std::ifstream inFile(filename, std::ios_base::in);
bool allow_remote = false;
std::ifstream inFile(filename, std::ios_base::in);
try {
if (inFile.is_open())
{
inFile >> configJson;
inFile.close();
allow_remote = configJson.get("allow_remote", "false").asBool();
}
} catch (const std::exception & e) {
std::cerr << "Error reading remote server config file: " << filename << ": " << e.what() << std::endl;
std::cerr << "Reverting to remote server config to defaults" << std::endl;
}
inFile.close();
// rewrite/normalize config file
configJson["allow_remote"] = allow_remote;