aboutsummaryrefslogtreecommitdiff
path: root/src/checkpoints
diff options
context:
space:
mode:
Diffstat (limited to 'src/checkpoints')
-rw-r--r--src/checkpoints/checkpoints.cpp37
-rw-r--r--src/checkpoints/checkpoints.h32
2 files changed, 35 insertions, 34 deletions
diff --git a/src/checkpoints/checkpoints.cpp b/src/checkpoints/checkpoints.cpp
index 9be08958c..67a313bc2 100644
--- a/src/checkpoints/checkpoints.cpp
+++ b/src/checkpoints/checkpoints.cpp
@@ -36,15 +36,38 @@ using namespace epee;
#include "common/dns_utils.h"
#include "include_base_utils.h"
+#include "string_tools.h"
#include "storages/portable_storage_template_helper.h" // epee json include
-#include <sstream>
-#include <random>
+#include "serialization/keyvalue_serialization.h"
#undef MONERO_DEFAULT_LOG_CATEGORY
#define MONERO_DEFAULT_LOG_CATEGORY "checkpoints"
namespace cryptonote
{
+ /**
+ * @brief struct for loading a checkpoint from json
+ */
+ struct t_hashline
+ {
+ uint64_t height; //!< the height of the checkpoint
+ std::string hash; //!< the hash for the checkpoint
+ BEGIN_KV_SERIALIZE_MAP()
+ KV_SERIALIZE(height)
+ KV_SERIALIZE(hash)
+ END_KV_SERIALIZE_MAP()
+ };
+
+ /**
+ * @brief struct for loading many checkpoints from json
+ */
+ struct t_hash_json {
+ std::vector<t_hashline> hashlines; //!< the checkpoint lines from the file
+ BEGIN_KV_SERIALIZE_MAP()
+ KV_SERIALIZE(hashlines)
+ END_KV_SERIALIZE_MAP()
+ };
+
//---------------------------------------------------------------------------
checkpoints::checkpoints()
{
@@ -181,7 +204,7 @@ namespace cryptonote
return true;
}
- bool checkpoints::load_checkpoints_from_json(const std::string json_hashfile_fullpath)
+ bool checkpoints::load_checkpoints_from_json(const std::string &json_hashfile_fullpath)
{
boost::system::error_code errcode;
if (! (boost::filesystem::exists(json_hashfile_fullpath, errcode)))
@@ -195,7 +218,11 @@ namespace cryptonote
uint64_t prev_max_height = get_max_height();
LOG_PRINT_L1("Hard-coded max checkpoint height is " << prev_max_height);
t_hash_json hashes;
- epee::serialization::load_t_from_json_file(hashes, json_hashfile_fullpath);
+ if (!epee::serialization::load_t_from_json_file(hashes, json_hashfile_fullpath))
+ {
+ MERROR("Error loading checkpoints from " << json_hashfile_fullpath);
+ return false;
+ }
for (std::vector<t_hashline>::const_iterator it = hashes.hashlines.begin(); it != hashes.hashlines.end(); )
{
uint64_t height;
@@ -263,7 +290,7 @@ namespace cryptonote
return true;
}
- bool checkpoints::load_new_checkpoints(const std::string json_hashfile_fullpath, bool testnet, bool dns)
+ bool checkpoints::load_new_checkpoints(const std::string &json_hashfile_fullpath, bool testnet, bool dns)
{
bool result;
diff --git a/src/checkpoints/checkpoints.h b/src/checkpoints/checkpoints.h
index a643c5790..83969f7b8 100644
--- a/src/checkpoints/checkpoints.h
+++ b/src/checkpoints/checkpoints.h
@@ -33,7 +33,6 @@
#include <vector>
#include "misc_log_ex.h"
#include "crypto/hash.h"
-#include "serialization/keyvalue_serialization.h"
#define ADD_CHECKPOINT(h, hash) CHECK_AND_ASSERT(add_checkpoint(h, hash), false);
#define JSON_HASH_FILE_NAME "checkpoints.json"
@@ -166,7 +165,7 @@ namespace cryptonote
*
* @return true if loading successful and no conflicts
*/
- bool load_new_checkpoints(const std::string json_hashfile_fullpath, bool testnet=false, bool dns=true);
+ bool load_new_checkpoints(const std::string &json_hashfile_fullpath, bool testnet=false, bool dns=true);
/**
* @brief load new checkpoints from json
@@ -175,7 +174,7 @@ namespace cryptonote
*
* @return true if loading successful and no conflicts
*/
- bool load_checkpoints_from_json(const std::string json_hashfile_fullpath);
+ bool load_checkpoints_from_json(const std::string &json_hashfile_fullpath);
/**
* @brief load new checkpoints from DNS
@@ -187,32 +186,7 @@ namespace cryptonote
bool load_checkpoints_from_dns(bool testnet = false);
private:
-
-
- /**
- * @brief struct for loading a checkpoint from json
- */
- struct t_hashline
- {
- uint64_t height; //!< the height of the checkpoint
- std::string hash; //!< the hash for the checkpoint
- BEGIN_KV_SERIALIZE_MAP()
- KV_SERIALIZE(height)
- KV_SERIALIZE(hash)
- END_KV_SERIALIZE_MAP()
- };
-
- /**
- * @brief struct for loading many checkpoints from json
- */
- struct t_hash_json {
- std::vector<t_hashline> hashlines; //!< the checkpoint lines from the file
- BEGIN_KV_SERIALIZE_MAP()
- KV_SERIALIZE(hashlines)
- END_KV_SERIALIZE_MAP()
- };
-
std::map<uint64_t, crypto::hash> m_points; //!< the checkpoints container
-
};
+
}