summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2008-02-20 17:45:22 +0000
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2008-02-20 17:45:22 +0000
commit3274b6acc7fcf5485c07a99c0aad1228df201eef (patch)
tree423494d0d480df3a70701d61d4db8c621015e170 /src
parentcfd0a40fdb8d1b1dccb53c3cbbaf34af037dbb55 (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.cc9
-rw-r--r--src/DefaultBtInteractive.cc6
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;
}