From fe59bcdb83dae66653eed3eaa06038897fc46631 Mon Sep 17 00:00:00 2001 From: csoler Date: Thu, 14 May 2015 13:03:29 +0000 Subject: [PATCH] rebased patch 0011-p3PeerMgrIMPL-UpdateOwnAddress-put-all-local-address.patch to new IPv6 branch git-svn-id: http://svn.code.sf.net/p/retroshare/code/branches/v0.6-IPv6-2@8243 b45a01b8-16f6-495d-af2f-9b41ad6348cc --- libretroshare/src/pqi/p3peermgr.cc | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/libretroshare/src/pqi/p3peermgr.cc b/libretroshare/src/pqi/p3peermgr.cc index e33cd631f..85702ee0a 100644 --- a/libretroshare/src/pqi/p3peermgr.cc +++ b/libretroshare/src/pqi/p3peermgr.cc @@ -965,7 +965,7 @@ void p3PeerMgrIMPL::printPeerLists(std::ostream &out) * as it doesn't call back to there. */ -bool p3PeerMgrIMPL::UpdateOwnAddress(const struct sockaddr_storage &localAddr, const struct sockaddr_storage &extAddr) +bool p3PeerMgrIMPL::UpdateOwnAddress(const struct sockaddr_storage &localAddr, const struct sockaddr_storage &extAddr) { #ifdef PEER_DEBUG std::cerr << "p3PeerMgrIMPL::UpdateOwnAddress("; @@ -976,16 +976,25 @@ bool p3PeerMgrIMPL::UpdateOwnAddress(const struct sockaddr_storage &localAddr, #endif { - RsStackMutex stack(mPeerMtx); /****** STACK LOCK MUTEX *******/ - - //update ip address list - pqiIpAddress ipAddressTimed; - ipAddressTimed.mAddr = localAddr; - ipAddressTimed.mSeenTime = time(NULL); - ipAddressTimed.mSrc = 0 ; - mOwnState.ipAddrs.updateLocalAddrs(ipAddressTimed); + /****** STACK LOCK MUTEX *******/ + RsStackMutex stack(mPeerMtx); (void)stack; mOwnState.localaddr = localAddr; + + // update ip address list + std::list::iterator it; + std::list lAddrs; + getLocalAddresses(lAddrs); + lAddrs.push_front(localAddr); + for ( it = lAddrs.begin(); it != lAddrs.end(); ++it) + { + pqiIpAddress ipAddressTimed; + ipAddressTimed.mAddr = *it; + sockaddr_storage_setport(ipAddressTimed.mAddr, sockaddr_storage_port(localAddr)); + ipAddressTimed.mSeenTime = time(NULL); + ipAddressTimed.mSrc = 0 ; + mOwnState.ipAddrs.updateLocalAddrs(ipAddressTimed); + } }