diff --git a/src/net.h b/src/net.h index 96f04d83e..7839b75a8 100644 --- a/src/net.h +++ b/src/net.h @@ -469,6 +469,13 @@ public: virtual bool SendMessages(CNode* pnode, std::atomic& interrupt) = 0; virtual void InitializeNode(CNode* pnode) = 0; virtual void FinalizeNode(NodeId id, bool& update_connection_time) = 0; + +protected: + /** + * Protected destructor so that instances can only be deleted by derived classes. + * If that restriction is no longer desired, this should be made public and virtual. + */ + ~NetEventsInterface() = default; }; enum diff --git a/src/net_processing.h b/src/net_processing.h index ff1ebc59d..11543129c 100644 --- a/src/net_processing.h +++ b/src/net_processing.h @@ -35,7 +35,7 @@ static constexpr int64_t EXTRA_PEER_CHECK_INTERVAL = 45; /** Minimum time an outbound-peer-eviction candidate must be connected for, in order to evict, in seconds */ static constexpr int64_t MINIMUM_CONNECT_TIME = 30; -class PeerLogicValidation : public CValidationInterface, public NetEventsInterface { +class PeerLogicValidation final : public CValidationInterface, public NetEventsInterface { private: CConnman* const connman; diff --git a/src/validationinterface.h b/src/validationinterface.h index 56ea698a2..63097166a 100644 --- a/src/validationinterface.h +++ b/src/validationinterface.h @@ -55,6 +55,11 @@ void SyncWithValidationInterfaceQueue(); class CValidationInterface { protected: + /** + * Protected destructor so that instances can only be deleted by derived classes. + * If that restriction is no longer desired, this should be made public and virtual. + */ + ~CValidationInterface() = default; /** * Notifies listeners of updated block chain tip *