Fixed configuration logic issues.

This commit is contained in:
ravinsp
2020-09-26 23:03:10 +05:30
parent c41e0d2e72
commit 1245da52b2
3 changed files with 20 additions and 13 deletions

View File

@@ -247,12 +247,16 @@ namespace conf
const char *ipport_concat = v.as<const char *>();
// Split the address:port text into two
util::split_string(splitted_peers, ipport_concat, ":");
if (splitted_peers.size() == 2)
// Push the peer address and the port to peers set
if (splitted_peers.size() != 2)
{
// Push the peer address and the port to peers set
cfg.peers.emplace(std::make_pair(splitted_peers.front(), std::stoi(splitted_peers.back())));
splitted_peers.clear();
std::cout << "Invalid peer: " << ipport_concat << "\n";
return -1;
}
cfg.peers.emplace(std::make_pair(splitted_peers.front(), std::stoi(splitted_peers.back())));
splitted_peers.clear();
}
cfg.unl.clear();
@@ -379,6 +383,7 @@ namespace conf
catch (const std::exception &e)
{
std::cout << "Writing to config file failed. " << ctx.config_file << std::endl;
ofs.close();
return -1;
}
ofs.close();

View File

@@ -67,12 +67,12 @@ int parse_cmd(int argc, char **argv)
*/
void deinit()
{
usr::deinit();
p2p::deinit();
cons::deinit();
state_sync::deinit();
state_serve::deinit();
read_req::deinit();
usr::deinit();
p2p::deinit();
hpfs::deinit();
}
@@ -190,9 +190,8 @@ int main(int argc, char **argv)
<< (conf::cfg.startup_mode == conf::OPERATING_MODE::OBSERVER ? "Observer" : "Proposer");
LOG_INFO << "Public key: " << conf::cfg.pubkeyhex.substr(2); // Public key without 'ed' prefix.
if (hpfs::init() != 0 || read_req::init() != 0 ||
state_serve::init() != 0 || state_sync::init() != 0 || cons::init() != 0 ||
p2p::init() != 0 || usr::init() != 0)
if (hpfs::init() != 0 || p2p::init() != 0 || usr::init() != 0 || read_req::init() != 0 ||
state_serve::init() != 0 || state_sync::init() != 0 || cons::init() != 0)
{
deinit();
return -1;

View File

@@ -380,18 +380,21 @@ namespace util
if (str.empty())
return;
size_t start = 0U;
size_t start = 0;
size_t end = str.find(delimeter);
while (end != std::string::npos)
{
collection.push_back(std::string(str.substr(start, end - start)));
// Do not add empty strings.
if (start != end)
collection.push_back(std::string(str.substr(start, end - start)));
start = end + delimeter.length();
end = str.find(delimeter, start);
}
if (collection.empty())
collection.push_back(std::string(str));
// If there are any leftover from the source string add the remaining.
if (start < str.size())
collection.push_back(std::string(str.substr(start)));
}
} // namespace util