diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2008-02-20 17:45:22 +0000 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2008-02-20 17:45:22 +0000 |
| commit | 3274b6acc7fcf5485c07a99c0aad1228df201eef (patch) | |
| tree | 423494d0d480df3a70701d61d4db8c621015e170 /src | |
| parent | cfd0a40fdb8d1b1dccb53c3cbbaf34af037dbb55 (diff) | |
2008-02-21 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
Fixed abort when peer's ip address is IPv4-mapped address.
* src/DefaultBtContext.cc (computeFastSet)
Removed number-and-dots criteria, since
Util::isNumberAndDotsNotation()
cannot handle IPv4-mapped addresses.
* src/DefaultBtInteractive.cc (addPeerExchangeMessage)
Diffstat (limited to 'src')
| -rw-r--r-- | src/DefaultBtContext.cc | 9 | ||||
| -rw-r--r-- | src/DefaultBtInteractive.cc | 6 |
2 files changed, 6 insertions, 9 deletions
diff --git a/src/DefaultBtContext.cc b/src/DefaultBtContext.cc index f25b323f..23378656 100644 --- a/src/DefaultBtContext.cc +++ b/src/DefaultBtContext.cc @@ -48,6 +48,7 @@ #include "Logger.h" #include "FileEntry.h" #include "message.h" +#include "PeerMessageUtil.h" #include <cstring> #include <ostream> #include <functional> @@ -385,12 +386,10 @@ std::string DefaultBtContext::getActualBasePath() const std::deque<int32_t> DefaultBtContext::computeFastSet(const std::string& ipaddr, int32_t fastSetSize) { std::deque<int32_t> fastSet; - struct in_addr saddr; - if(inet_aton(ipaddr.c_str(), &saddr) == 0) { - abort(); - } + char compact[6]; + PeerMessageUtil::createcompact(compact, ipaddr, 0); unsigned char tx[24]; - memcpy(tx, (void*)&saddr.s_addr, 4); + memcpy(tx, compact, 4); if((tx[0] & 0x80) == 0 || (tx[0] & 0x40) == 0) { tx[2] = 0x00; tx[3] = 0x00; diff --git a/src/DefaultBtInteractive.cc b/src/DefaultBtInteractive.cc index 80f59a10..1b2de239 100644 --- a/src/DefaultBtInteractive.cc +++ b/src/DefaultBtInteractive.cc @@ -380,8 +380,7 @@ void DefaultBtInteractive::addPeerExchangeMessage() i != peers.end() && max; ++i) { const PeerHandle& cpeer = *i; if(peer->ipaddr != cpeer->ipaddr && - !cpeer->getFirstContactTime().elapsed(interval) && - Util::isNumbersAndDotsNotation(cpeer->ipaddr)) { + !cpeer->getFirstContactTime().elapsed(interval)) { m->addFreshPeer(cpeer); --max; } @@ -393,8 +392,7 @@ void DefaultBtInteractive::addPeerExchangeMessage() i != peers.rend() && max; ++i) { const PeerHandle& cpeer = *i; if(peer->ipaddr != cpeer->ipaddr && - !cpeer->getBadConditionStartTime().elapsed(interval) && - Util::isNumbersAndDotsNotation(cpeer->ipaddr)) { + !cpeer->getBadConditionStartTime().elapsed(interval)) { m->addDroppedPeer(cpeer); --max; } |
