diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2010-08-03 11:44:24 +0000 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2010-08-03 11:44:24 +0000 |
| commit | 2bd5020f81bc8c9995590209d0bf024147c8a51a (patch) | |
| tree | 3cc93c71179570c7a4889a25f64f56d3c8820c84 /src/DHTRoutingTableSerializer.cc | |
| parent | 939a372727b2f27e683a23ac38928b82de550376 (diff) | |
2010-08-03 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Added bittorrent::packcompact() which replaces
bittorrent::createcompact() and supports IPv6 addresses. Rewritten
bittorrent::unpackcompact() and bittorrent::extractPeer() to
support IPv6 addresses. Fixed added.f flags in ut_pex.
* src/BtConstants.h
* src/DHTFindNodeReplyMessage.cc
* src/DHTGetPeersReplyMessage.cc
* src/DHTMessageFactoryImpl.cc
* src/DHTRoutingTableDeserializer.cc
* src/DHTRoutingTableSerializer.cc
* src/DHTTokenTracker.cc
* src/DefaultBtAnnounce.cc
* src/UTPexExtensionMessage.cc
* src/bittorrent_helper.cc
* src/bittorrent_helper.h
* test/BittorrentHelperTest.cc
* test/DHTFindNodeReplyMessageTest.cc
* test/DHTGetPeersReplyMessageTest.cc
* test/DHTMessageFactoryImplTest.cc
* test/DHTRoutingTableSerializerTest.cc
* test/DefaultExtensionMessageFactoryTest.cc
* test/UTPexExtensionMessageTest.cc
Diffstat (limited to 'src/DHTRoutingTableSerializer.cc')
| -rw-r--r-- | src/DHTRoutingTableSerializer.cc | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/src/DHTRoutingTableSerializer.cc b/src/DHTRoutingTableSerializer.cc index 8038a739..81976c50 100644 --- a/src/DHTRoutingTableSerializer.cc +++ b/src/DHTRoutingTableSerializer.cc @@ -105,19 +105,21 @@ void DHTRoutingTableSerializer::serialize(std::ostream& o) for(std::vector<SharedHandle<DHTNode> >::const_iterator i = nodes_.begin(), eoi = nodes_.end(); i != eoi; ++i) { const SharedHandle<DHTNode>& node = *i; - // Currently, only IPv4 address and IPv4-mapped address are saved. + // Currently, only IPv4 addresses are saved. // 6bytes: write IP address + port in Compact IP-address/port info form. - unsigned char compactPeer[6]; - if(!bittorrent::createcompact - (compactPeer, node->getIPAddress(), node->getPort())) { - memset(compactPeer, 0, 6); + unsigned char compactPeer[COMPACT_LEN_IPV6]; + int compactlen = bittorrent::packcompact + (compactPeer, node->getIPAddress(), node->getPort()); + if(compactlen != COMPACT_LEN_IPV4) { + compactlen = COMPACT_LEN_IPV4; + memset(compactPeer, 0, COMPACT_LEN_IPV4); } // 1byte compact peer format length - o << static_cast<uint8_t>(sizeof(compactPeer)); + o << static_cast<uint8_t>(compactlen); // 7bytes reserved o.write(zero, 7); // 6 bytes compact peer - o.write(reinterpret_cast<const char*>(compactPeer), 6); + o.write(reinterpret_cast<const char*>(compactPeer), compactlen); // 2bytes reserved o.write(zero, 2); // 16bytes reserved |
