From e87b7b75e754415032a489006c845eac4550f12a Mon Sep 17 00:00:00 2001 From: drbob Date: Tue, 26 Feb 2008 18:55:16 +0000 Subject: [PATCH] Various Bugfixes: * Clear discFlags before creating DiscItem packets. * Don't call stunStatus/peerStatus if refering to self (p3disc). * Expand allowed listen port range. * Limit max size of stored StunList. git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@357 b45a01b8-16f6-495d-af2f-9b41ad6348cc --- libretroshare/src/pqi/p3connmgr.cc | 4 +++- libretroshare/src/pqi/pqi_base.h | 2 +- libretroshare/src/services/p3disc.cc | 4 +++- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/libretroshare/src/pqi/p3connmgr.cc b/libretroshare/src/pqi/p3connmgr.cc index 7abf5c503..bcdb3de90 100644 --- a/libretroshare/src/pqi/p3connmgr.cc +++ b/libretroshare/src/pqi/p3connmgr.cc @@ -2116,7 +2116,9 @@ std::list p3ConnectMgr::saveList(bool &cleanup) RsPeerStunItem *sitem = new RsPeerStunItem(); std::list::iterator sit; - for(sit = mStunList.begin(); sit != mStunList.end(); sit++) + uint32_t count = 0; + for(sit = mStunList.begin(); (sit != mStunList.end()) && + (count < RS_STUN_LIST_MIN); sit++, count++) { sitem->stunList.ids.push_back(*sit); } diff --git a/libretroshare/src/pqi/pqi_base.h b/libretroshare/src/pqi/pqi_base.h index ed7b3dc7f..4aa3c5413 100644 --- a/libretroshare/src/pqi/pqi_base.h +++ b/libretroshare/src/pqi/pqi_base.h @@ -41,7 +41,7 @@ #define PQI_MIN_PORT 1024 -#define PQI_MAX_PORT 16000 +#define PQI_MAX_PORT 50000 #define PQI_DEFAULT_PORT 7812 int getPQIsearchId(); diff --git a/libretroshare/src/services/p3disc.cc b/libretroshare/src/services/p3disc.cc index eb28d08ae..a4a37c3d3 100644 --- a/libretroshare/src/services/p3disc.cc +++ b/libretroshare/src/services/p3disc.cc @@ -326,6 +326,7 @@ void p3disc::sendOwnDetails(std::string to) di -> contact_tf = 0; /* construct disc flags */ + di -> discFlags = 0; if (!(detail.visState & RS_VIS_STATE_NODISC)) { di->discFlags |= P3DISC_FLAGS_USE_DISC; @@ -545,7 +546,8 @@ void p3disc::recvPeerFriendMsg(RsDiscReply *item) flags |= RS_NET_FLAGS_EXTERNAL_ADDR; } - if (loaded) + /* only valid certs, and not ourselves */ + if ((loaded) && (peerId != mConnMgr->getOwnId())) { mConnMgr->peerStatus(peerId, item->laddr, item->saddr, type, flags, RS_CB_DISC);