mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-06-02 09:15:04 +02:00
Merge #19845: net: CNetAddr: add support to (un)serialize as ADDRv2
7be6ff6187net: recognize TORv3/I2P/CJDNS networks (Vasil Dimov)e0d73573a3net: CNetAddr: add support to (un)serialize as ADDRv2 (Vasil Dimov)fe42411b4btest: move HasReason so it can be reused (Vasil Dimov)d2bb681f96util: move HasPrefix() so it can be reused (Vasil Dimov) Pull request description: (chopped off from #19031 to ease review) Add an optional support to serialize/unserialize `CNetAddr` in ADDRv2 format (BIP155). The new serialization is engaged by ORing a flag into the stream version. So far this is only used in tests to ensure the new code works as expected. ACKs for top commit: Sjors: re-tACK7be6ff6187sipa: re-utACK7be6ff6187eriknylund: ACK7be6ff6187I built the PR on macOS Catalina 10.15.6, ran both tests and functional tests. I've reviewed the code and think the changes look good and according to BIP155. I verified that the added Base32 encoding test looks as proposed and working. I've run a node for a week only with Onion addresses `-onlynet=onion` without issues and I can connect to other peer reviewers running TorV3 on their nodes and I can connect both of my test nodes to each other. jonatack: re-ACK7be6ff6187per `git diff b9c46e0 7be6ff6`, debug build, ran/running bitcoind with this change and observed the log and `-netinfo` peer connections while connected as a tor v2 service to both tor v2 peers and also five tor v3 peers. hebasto: ACK7be6ff6187, tested on Linux Mint 20 (x86_64): on top of this pull and #19031 I'm able to connect to onion v3 addresses, and jonatack is able to connect to my created onion v3 address. Tree-SHA512: dc621411ac4393993aa3ccad10991717ec5f9f2643cae46a24a89802df0a33d6042994fc8ff2f0f397a3dbcd1c0e58fe4724305a2f9eb64d9342c3bdf784d9be
This commit is contained in:
@@ -153,4 +153,20 @@ CBlock getBlock13b8a();
|
||||
// define an implicit conversion here so that uint256 may be used directly in BOOST_CHECK_*
|
||||
std::ostream& operator<<(std::ostream& os, const uint256& num);
|
||||
|
||||
/**
|
||||
* BOOST_CHECK_EXCEPTION predicates to check the specific validation error.
|
||||
* Use as
|
||||
* BOOST_CHECK_EXCEPTION(code that throws, exception type, HasReason("foo"));
|
||||
*/
|
||||
class HasReason {
|
||||
public:
|
||||
explicit HasReason(const std::string& reason) : m_reason(reason) {}
|
||||
template <typename E>
|
||||
bool operator() (const E& e) const {
|
||||
return std::string(e.what()).find(m_reason) != std::string::npos;
|
||||
};
|
||||
private:
|
||||
const std::string m_reason;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user