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/UTPexExtensionMessage.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/UTPexExtensionMessage.cc')
| -rw-r--r-- | src/UTPexExtensionMessage.cc | 17 |
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; |
