From 3d299253d3b8fa85aecf87bf1e2d9bc02ce63add Mon Sep 17 00:00:00 2001 From: csoler Date: Sun, 15 Mar 2015 15:45:49 +0000 Subject: [PATCH] 0009 populate RsDisContactItem with IPv6 too (Patch from G10H4ck) git-svn-id: http://svn.code.sf.net/p/retroshare/code/branches/v0.6-IPv6@8033 b45a01b8-16f6-495d-af2f-9b41ad6348cc --- libretroshare/src/services/p3discovery2.cc | 11 +++++++++-- libretroshare/src/util/rsnet_ss.cc | 9 +++++---- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/libretroshare/src/services/p3discovery2.cc b/libretroshare/src/services/p3discovery2.cc index 67177948c..094599cbe 100644 --- a/libretroshare/src/services/p3discovery2.cc +++ b/libretroshare/src/services/p3discovery2.cc @@ -62,9 +62,16 @@ bool populateContactInfo(const peerState &detail, RsDiscContactItem *pkt) pkt->isHidden = false; pkt->localAddrV4.addr = detail.localaddr; + if(!sockaddr_storage_ipv6_to_ipv4(pkt->localAddrV4.addr)) sockaddr_storage_clear(pkt->localAddrV4.addr); + pkt->extAddrV4.addr = detail.serveraddr; - sockaddr_storage_clear(pkt->localAddrV6.addr); - sockaddr_storage_clear(pkt->extAddrV6.addr); + if(!sockaddr_storage_ipv6_to_ipv4(pkt->extAddrV4.addr)) sockaddr_storage_clear(pkt->extAddrV4.addr); + + pkt->localAddrV6.addr = detail.localaddr; + if (!sockaddr_storage_ipv4_to_ipv6(pkt->localAddrV6.addr)) sockaddr_storage_clear(pkt->localAddrV6.addr); + + pkt->extAddrV6.addr = detail.serveraddr; + if(!sockaddr_storage_ipv4_to_ipv6(pkt->extAddrV6.addr)) sockaddr_storage_clear(pkt->extAddrV6.addr); pkt->dyndns = detail.dyndns; detail.ipAddrs.mLocal.loadTlv(pkt->localAddrList); diff --git a/libretroshare/src/util/rsnet_ss.cc b/libretroshare/src/util/rsnet_ss.cc index d5f700e44..a1f50d060 100644 --- a/libretroshare/src/util/rsnet_ss.cc +++ b/libretroshare/src/util/rsnet_ss.cc @@ -304,9 +304,9 @@ bool sockaddr_storage_ipv4_to_ipv6(sockaddr_storage &addr) bool sockaddr_storage_ipv6_to_ipv4(sockaddr_storage &addr) { -//#ifdef SS_DEBUG +#ifdef SS_DEBUG std::cerr << "sockaddr_storage_ipv6_to_ipv4(sockaddr_storage &addr)" << std::endl; -//#endif +#endif if ( addr.ss_family == AF_INET ) return true; @@ -801,8 +801,9 @@ bool sockaddr_storage_ipv6_lessthan(const struct sockaddr_storage &addr, const s bool sockaddr_storage_ipv6_same(const struct sockaddr_storage &addr, const struct sockaddr_storage &addr2) { - std::cerr << "sockaddr_storage_ipv6_same()"; - std::cerr << std::endl; +#ifdef SS_DEBUG + std::cerr << "sockaddr_storage_ipv6_same()" << std::endl; +#endif const struct sockaddr_in6 *ptr1 = to_const_ipv6_ptr(addr); const struct sockaddr_in6 *ptr2 = to_const_ipv6_ptr(addr2);