summaryrefslogtreecommitdiff
path: root/src/UTPexExtensionMessage.cc
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2010-08-03 11:44:24 +0000
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2010-08-03 11:44:24 +0000
commit2bd5020f81bc8c9995590209d0bf024147c8a51a (patch)
tree3cc93c71179570c7a4889a25f64f56d3c8820c84 /src/UTPexExtensionMessage.cc
parent939a372727b2f27e683a23ac38928b82de550376 (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/UTPexExtensionMessage.cc')
-rw-r--r--src/UTPexExtensionMessage.cc17
1 files changed, 10 insertions, 7 deletions
diff --git a/src/UTPexExtensionMessage.cc b/src/UTPexExtensionMessage.cc
index 726510c8..5a1b9aa4 100644
--- a/src/UTPexExtensionMessage.cc
+++ b/src/UTPexExtensionMessage.cc
@@ -78,11 +78,12 @@ UTPexExtensionMessage::createCompactPeerListAndFlag
std::string flagstring;
for(std::vector<SharedHandle<Peer> >::const_iterator itr = peers.begin(),
eoi = peers.end(); itr != eoi; ++itr) {
- unsigned char compact[6];
- if(bittorrent::createcompact
- (compact, (*itr)->getIPAddress(), (*itr)->getPort())) {
- addrstring.append(&compact[0], &compact[6]);
- flagstring += (*itr)->isSeeder() ? "2" : "0";
+ unsigned char compact[COMPACT_LEN_IPV6];
+ int compactlen = bittorrent::packcompact
+ (compact, (*itr)->getIPAddress(), (*itr)->getPort());
+ if(compactlen == COMPACT_LEN_IPV4) {
+ addrstring.append(&compact[0], &compact[compactlen]);
+ flagstring += (*itr)->isSeeder() ? 0x02 : 0x00;
}
}
return std::pair<std::string, std::string>(addrstring, flagstring);
@@ -162,11 +163,13 @@ UTPexExtensionMessage::create(const unsigned char* data, size_t len)
if(dict) {
const String* added = asString(dict->get("added"));
if(added) {
- bittorrent::extractPeer(added, std::back_inserter(msg->freshPeers_));
+ bittorrent::extractPeer
+ (added, AF_INET, std::back_inserter(msg->freshPeers_));
}
const String* dropped = asString(dict->get("dropped"));
if(dropped) {
- bittorrent::extractPeer(dropped, std::back_inserter(msg->droppedPeers_));
+ bittorrent::extractPeer
+ (dropped, AF_INET, std::back_inserter(msg->droppedPeers_));
}
}
return msg;