diff --git a/include/dhtcpp/dht.h b/include/dhtcpp/dht.h index ecc3d2eb2e9a1ffb71af5e77f084f4661fd0f8d7..5986e7ddc671f0e20d0a719d361937e50372d23d 100644 --- a/include/dhtcpp/dht.h +++ b/include/dhtcpp/dht.h @@ -247,14 +247,14 @@ private: }; struct Bucket { - Bucket() {} + Bucket() : cached() {} Bucket(sa_family_t af, const InfoHash& f = {}, time_t t = 0) - : af(af), first(f), time(t) {} + : af(af), first(f), time(t), cached() {} sa_family_t af {0}; InfoHash first {}; time_t time {0}; /* time of last reply in this bucket */ std::list<Node> nodes {}; - sockaddr_storage cached {}; /* the address of a likely candidate */ + sockaddr_storage cached; /* the address of a likely candidate */ socklen_t cachedlen {0}; /** Return a random node in a bucket. */ @@ -290,8 +290,8 @@ private: }; struct SearchNode { - SearchNode() {} - SearchNode(const InfoHash& id) : id(id) {} + SearchNode() : ss() {} + SearchNode(const InfoHash& id) : id(id), ss() {} struct AnnounceStatus { time_t request_time; /* the time of the last unanswered announce request */ @@ -316,7 +316,7 @@ private: } InfoHash id {}; - sockaddr_storage ss {}; + sockaddr_storage ss; socklen_t sslen {0}; time_t request_time {0}; /* the time of the last unanswered request */ time_t reply_time {0}; /* the time of the last reply with a token */ @@ -470,7 +470,7 @@ private: sockaddr_storage blacklist[BLACKLISTED_MAX] {}; unsigned next_blacklisted = 0; - struct timeval now {}; + struct timeval now {0, 0}; time_t mybucket_grow_time {0}, mybucket6_grow_time {0}; time_t expire_stuff_time {0}; time_t rate_limit_time {0}; diff --git a/include/dhtcpp/securedht.h b/include/dhtcpp/securedht.h index d44dee06071d01bf53a9d6e05a64e7608df61ddf..b435a029d0a383bdf7bf6be6dcb2a457f69a408e 100644 --- a/include/dhtcpp/securedht.h +++ b/include/dhtcpp/securedht.h @@ -135,7 +135,8 @@ private: std::map<InfoHash, std::shared_ptr<crypto::Certificate>> nodesCertificates_ {}; }; -const ValueType CERTIFICATE_TYPE = {8, "Certificate", 60 * 60 * 24 * 7, +const ValueType CERTIFICATE_TYPE = { + 8, "Certificate", 60 * 60 * 24 * 7, // A certificate can only be stored at it's public key ID. [](InfoHash id, std::shared_ptr<Value>& v, InfoHash, const sockaddr*, socklen_t) { try { @@ -145,11 +146,9 @@ const ValueType CERTIFICATE_TYPE = {8, "Certificate", 60 * 60 * 24 * 7, } catch (const std::exception& e) {} return false; }, - [](InfoHash id, const std::shared_ptr<Value>& o, std::shared_ptr<Value>& n, InfoHash, const sockaddr*, socklen_t) { + [](InfoHash, const std::shared_ptr<Value>& o, std::shared_ptr<Value>& n, InfoHash, const sockaddr*, socklen_t) { try { - crypto::Certificate crt_old(o->data); - crypto::Certificate crt_new(n->data); - return crt_old.getPublicKey().getId() == crt_new.getPublicKey().getId(); + return crypto::Certificate(o->data).getPublicKey().getId() == crypto::Certificate(n->data).getPublicKey().getId(); } catch (const std::exception& e) {} return false; }