aboutsummaryrefslogtreecommitdiff
path: root/src/netaddress.cpp
diff options
context:
space:
mode:
authorVasil Dimov <vd@FreeBSD.org>2021-09-09 18:19:17 +0200
committerVasil Dimov <vd@FreeBSD.org>2021-11-03 14:41:09 +0100
commitaedd02ef2750329019d5698b14b17d67c5a563ad (patch)
treea8ea7a810997f64c3cca243f4473bff751ebacd8 /src/netaddress.cpp
parent23ae7931be50376fa6bda692c641a3d2538556ee (diff)
downloadbitcoin-aedd02ef2750329019d5698b14b17d67c5a563ad.tar.xz
net: make it possible to connect to CJDNS addresses
Connecting to CJDNS addresses works without a proxy, just like connecting to an IPv6 address. Thus adapt `CService::GetSockAddr()` to retrieve the `struct sockaddr*` even for `CService::IsCJDNS()` objects.
Diffstat (limited to 'src/netaddress.cpp')
-rw-r--r--src/netaddress.cpp6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/netaddress.cpp b/src/netaddress.cpp
index f9fff5a6d5..c7ec2b8659 100644
--- a/src/netaddress.cpp
+++ b/src/netaddress.cpp
@@ -663,7 +663,7 @@ bool CNetAddr::GetInAddr(struct in_addr* pipv4Addr) const
}
/**
- * Try to get our IPv6 address.
+ * Try to get our IPv6 (or CJDNS) address.
*
* @param[out] pipv6Addr The in6_addr struct to which to copy.
*
@@ -674,7 +674,7 @@ bool CNetAddr::GetInAddr(struct in_addr* pipv4Addr) const
*/
bool CNetAddr::GetIn6Addr(struct in6_addr* pipv6Addr) const
{
- if (!IsIPv6()) {
+ if (!IsIPv6() && !IsCJDNS()) {
return false;
}
assert(sizeof(*pipv6Addr) == m_addr.size());
@@ -993,7 +993,7 @@ bool CService::GetSockAddr(struct sockaddr* paddr, socklen_t *addrlen) const
paddrin->sin_port = htons(port);
return true;
}
- if (IsIPv6()) {
+ if (IsIPv6() || IsCJDNS()) {
if (*addrlen < (socklen_t)sizeof(struct sockaddr_in6))
return false;
*addrlen = sizeof(struct sockaddr_in6);