From 2cc471ebf6600f11c6af07e4e968778c2c470b0b Mon Sep 17 00:00:00 2001 From: Tatsuhiro Tsujikawa Date: Wed, 20 Feb 2008 13:02:48 +0000 Subject: 2008-02-20 Tatsuhiro Tsujikawa IPv6 support for SocketCore class. TODO: In SocketCore::establishConnection(), this is insufficient to determin the failure of connect() here because the socket is non-blocking state. The next addresses should be tried after select(). TODO: NameResolver still uses c-ares(<= 1.4) ares_gethostbyname(). If c-ares 1.5 or newer is installed, ares_getaddrinfo() should be used instead which address family independent. TODO: DHTRoutingTable{Deserializer,Serializer} currently saves peer information in a compact peer format which is for IPv4 only. Some BitTorrent functions in PeerMessageUtil still depends on IPv4 but this is a spec of BitTorrent protocol. * src/SocketCore.{h, cc} * src/PeerMessageUtil.cc * test/SocketCoreTest.cc * test/PeerMessageUtilTest.cc * test/DHTConnectionImplTest.cc Handle IPv4-mapped addresses. * src/DHTNode.cc: Now identity is determined by node id. * src/DHTMessageTrackerEntry.cc Because now PeerMessageUtil::unpackcompact() could fail, the caller should handle it. * src/DHTRoutingTableDeserializer.cc * src/DHTMessageFactoryImpl.cc --- src/DHTRoutingTableDeserializer.cc | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'src/DHTRoutingTableDeserializer.cc') diff --git a/src/DHTRoutingTableDeserializer.cc b/src/DHTRoutingTableDeserializer.cc index c370ff09..da0433bf 100644 --- a/src/DHTRoutingTableDeserializer.cc +++ b/src/DHTRoutingTableDeserializer.cc @@ -116,6 +116,11 @@ void DHTRoutingTableDeserializer::deserialize(std::istream& in) continue; } std::pair peer = PeerMessageUtil::unpackcompact(buf); + if(peer.first.empty()) { + // skip this entry + in.read(buf, 26); + continue; + } // 2bytes reserved in.read(buf, 2); // localnode ID -- cgit