diff options
author | MarcoFalke <falke.marco@gmail.com> | 2021-04-22 12:29:20 +0200 |
---|---|---|
committer | MarcoFalke <falke.marco@gmail.com> | 2021-04-22 12:29:23 +0200 |
commit | aaf66413e1233f7f93d5a938e39c604612f6c407 (patch) | |
tree | ab049dc9342fd6f6744a1d32271b2bfdf357f736 | |
parent | e7776e20ed0ddf41d15b3d2df87a92ea6666226c (diff) | |
parent | 58580a827d10c0675c3483e2aeca1d3ab8050ae0 (diff) |
Merge bitcoin/bitcoin#21564: net: Avoid calling getnameinfo when formatting IPv4 addresses in CNetAddr::ToStringIP
58580a827d10c0675c3483e2aeca1d3ab8050ae0 net: Avoid calling getnameinfo when formatting IPv4 addresses in CNetAddr::ToStringIP (practicalswift)
58580573843858068db69a378b6e9363889b1f6d net: Add IPv4ToString (we already have IPv6ToString) (practicalswift)
Pull request description:
Avoid calling `getnameinfo` when formatting IPv4 addresses in `CNetAddr::ToStringIP`.
ACKs for top commit:
naumenkogs:
ACK 58580a827d10c0675c3483e2aeca1d3ab8050ae0
0xB10C:
ACK 58580a827d10c0675c3483e2aeca1d3ab8050ae0
vasild:
ACK 58580a827d10c0675c3483e2aeca1d3ab8050ae0
Tree-SHA512: 25e3c416acb74908d001baf1cf64c04cbc0d94ce8e7ce5a601f1343062d5d748cb406a3404e6f2b6e7e979c6300b38439e1bfd70ea90ec8c0ec2d7568f09fbcd
-rw-r--r-- | src/netaddress.cpp | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/netaddress.cpp b/src/netaddress.cpp index 69edc15c66..d56ae78e92 100644 --- a/src/netaddress.cpp +++ b/src/netaddress.cpp @@ -551,6 +551,11 @@ enum Network CNetAddr::GetNetwork() const return m_net; } +static std::string IPv4ToString(Span<const uint8_t> a) +{ + return strprintf("%u.%u.%u.%u", a[0], a[1], a[2], a[3]); +} + static std::string IPv6ToString(Span<const uint8_t> a) { assert(a.size() == ADDR_IPV6_SIZE); @@ -571,6 +576,7 @@ std::string CNetAddr::ToStringIP() const { switch (m_net) { case NET_IPV4: + return IPv4ToString(m_addr); case NET_IPV6: { CService serv(*this, 0); struct sockaddr_storage sockaddr; @@ -581,9 +587,6 @@ std::string CNetAddr::ToStringIP() const sizeof(name), nullptr, 0, NI_NUMERICHOST)) return std::string(name); } - if (m_net == NET_IPV4) { - return strprintf("%u.%u.%u.%u", m_addr[0], m_addr[1], m_addr[2], m_addr[3]); - } return IPv6ToString(m_addr); } case NET_ONION: |