mirror of
https://github.com/RetroShare/RetroShare.git
synced 2024-10-01 02:35:48 -04:00
* Improvements to Link Cloud Service. You can now vote anonymously on a Link,
this will spread it to your friends anonymously. * Completed Mutex Locking on Connection Manager. git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@551 b45a01b8-16f6-495d-af2f-9b41ad6348cc
This commit is contained in:
parent
ffe371c4e5
commit
d48205286a
@ -245,7 +245,7 @@ void p3ConnectMgr::netStartup()
|
|||||||
/* decide which net setup mode we're going into
|
/* decide which net setup mode we're going into
|
||||||
*/
|
*/
|
||||||
|
|
||||||
connMtx.lock(); /* LOCK MUTEX */
|
RsStackMutex stack(connMtx); /****** STACK LOCK MUTEX *******/
|
||||||
|
|
||||||
mNetInitTS = time(NULL);
|
mNetInitTS = time(NULL);
|
||||||
|
|
||||||
@ -283,12 +283,6 @@ void p3ConnectMgr::netStartup()
|
|||||||
mNetStatus = RS_NET_UPNP_INIT;
|
mNetStatus = RS_NET_UPNP_INIT;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
connMtx.unlock(); /* UNLOCK MUTEX */
|
|
||||||
|
|
||||||
/* add Bootstrap Peers ALWAYs (get stuck on the end) */
|
|
||||||
addBootstrapStunPeers();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -663,7 +657,8 @@ void p3ConnectMgr::netUnreachableCheck()
|
|||||||
#endif
|
#endif
|
||||||
std::map<std::string, peerConnectState>::iterator it;
|
std::map<std::string, peerConnectState>::iterator it;
|
||||||
|
|
||||||
connMtx.lock(); /* LOCK MUTEX */
|
RsStackMutex stack(connMtx); /****** STACK LOCK MUTEX *******/
|
||||||
|
|
||||||
for(it = mFriendList.begin(); it != mFriendList.end(); it++)
|
for(it = mFriendList.begin(); it != mFriendList.end(); it++)
|
||||||
{
|
{
|
||||||
/* get last contact detail */
|
/* get last contact detail */
|
||||||
@ -725,7 +720,6 @@ void p3ConnectMgr::netUnreachableCheck()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
connMtx.unlock(); /* UNLOCK MUTEX */
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -756,9 +750,10 @@ bool p3ConnectMgr::udpExtAddressCheck()
|
|||||||
|
|
||||||
if (0 < tou_extaddr((struct sockaddr *) &addr, &len, &stable))
|
if (0 < tou_extaddr((struct sockaddr *) &addr, &len, &stable))
|
||||||
{
|
{
|
||||||
/* update UDP information */
|
RsStackMutex stack(connMtx); /****** STACK LOCK MUTEX *******/
|
||||||
connMtx.lock(); /* LOCK MUTEX */
|
|
||||||
|
|
||||||
|
|
||||||
|
/* update UDP information */
|
||||||
mStunExtAddr = addr;
|
mStunExtAddr = addr;
|
||||||
mStunAddrValid = true;
|
mStunAddrValid = true;
|
||||||
mStunAddrStable = (stable != 0);
|
mStunAddrStable = (stable != 0);
|
||||||
@ -771,9 +766,6 @@ bool p3ConnectMgr::udpExtAddressCheck()
|
|||||||
std::cerr << std::endl;
|
std::cerr << std::endl;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
connMtx.unlock(); /* UNLOCK MUTEX */
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
@ -805,7 +797,7 @@ void p3ConnectMgr::netStunInit()
|
|||||||
void p3ConnectMgr::stunInit()
|
void p3ConnectMgr::stunInit()
|
||||||
{
|
{
|
||||||
|
|
||||||
connMtx.lock(); /* LOCK MUTEX */
|
RsStackMutex stack(connMtx); /****** STACK LOCK MUTEX *******/
|
||||||
|
|
||||||
/* push stun list to DHT */
|
/* push stun list to DHT */
|
||||||
std::list<std::string>::iterator it;
|
std::list<std::string>::iterator it;
|
||||||
@ -816,8 +808,6 @@ void p3ConnectMgr::stunInit()
|
|||||||
mStunStatus = RS_STUN_DHT;
|
mStunStatus = RS_STUN_DHT;
|
||||||
mStunFound = 0;
|
mStunFound = 0;
|
||||||
mStunMoreRequired = true;
|
mStunMoreRequired = true;
|
||||||
|
|
||||||
connMtx.unlock(); /* UNLOCK MUTEX */
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool p3ConnectMgr::stunCheck()
|
bool p3ConnectMgr::stunCheck()
|
||||||
@ -851,12 +841,10 @@ bool p3ConnectMgr::stunCheck()
|
|||||||
/* set external UDP address */
|
/* set external UDP address */
|
||||||
mDhtMgr->doneStun();
|
mDhtMgr->doneStun();
|
||||||
|
|
||||||
connMtx.lock(); /* LOCK MUTEX */
|
RsStackMutex stack(connMtx); /****** STACK LOCK MUTEX *******/
|
||||||
|
|
||||||
mStunStatus = RS_STUN_DONE;
|
mStunStatus = RS_STUN_DONE;
|
||||||
|
|
||||||
connMtx.unlock(); /* UNLOCK MUTEX */
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
@ -911,8 +899,7 @@ OTHER
|
|||||||
|
|
||||||
void p3ConnectMgr::stunCollect(std::string id, struct sockaddr_in addr, uint32_t flags)
|
void p3ConnectMgr::stunCollect(std::string id, struct sockaddr_in addr, uint32_t flags)
|
||||||
{
|
{
|
||||||
/* if peer is online - move to the top */
|
RsStackMutex stack(connMtx); /****** STACK LOCK MUTEX *******/
|
||||||
connMtx.lock(); /* LOCK MUTEX */
|
|
||||||
|
|
||||||
#ifdef CONN_DEBUG
|
#ifdef CONN_DEBUG
|
||||||
std::cerr << "p3ConnectMgr::stunCollect() id: " << RsUtil::BinToHex(id) << std::endl;
|
std::cerr << "p3ConnectMgr::stunCollect() id: " << RsUtil::BinToHex(id) << std::endl;
|
||||||
@ -966,7 +953,6 @@ void p3ConnectMgr::stunCollect(std::string id, struct sockaddr_in addr, uint32_t
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
connMtx.unlock(); /* UNLOCK MUTEX */
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/******************************** Network Status *********************************
|
/******************************** Network Status *********************************
|
||||||
@ -976,10 +962,8 @@ void p3ConnectMgr::stunCollect(std::string id, struct sockaddr_in addr, uint32_t
|
|||||||
|
|
||||||
void p3ConnectMgr::addMonitor(pqiMonitor *mon)
|
void p3ConnectMgr::addMonitor(pqiMonitor *mon)
|
||||||
{
|
{
|
||||||
/*
|
RsStackMutex stack(connMtx); /****** STACK LOCK MUTEX *******/
|
||||||
*/
|
|
||||||
connMtx.lock(); /* LOCK MUTEX */
|
|
||||||
connMtx.unlock(); /* UNLOCK MUTEX */
|
|
||||||
std::list<pqiMonitor *>::iterator it;
|
std::list<pqiMonitor *>::iterator it;
|
||||||
it = std::find(clients.begin(), clients.end(), mon);
|
it = std::find(clients.begin(), clients.end(), mon);
|
||||||
if (it != clients.end())
|
if (it != clients.end())
|
||||||
@ -994,10 +978,8 @@ void p3ConnectMgr::addMonitor(pqiMonitor *mon)
|
|||||||
|
|
||||||
void p3ConnectMgr::removeMonitor(pqiMonitor *mon)
|
void p3ConnectMgr::removeMonitor(pqiMonitor *mon)
|
||||||
{
|
{
|
||||||
/*
|
RsStackMutex stack(connMtx); /****** STACK LOCK MUTEX *******/
|
||||||
*/
|
|
||||||
connMtx.lock(); /* LOCK MUTEX */
|
|
||||||
connMtx.unlock(); /* UNLOCK MUTEX */
|
|
||||||
std::list<pqiMonitor *>::iterator it;
|
std::list<pqiMonitor *>::iterator it;
|
||||||
it = std::find(clients.begin(), clients.end(), mon);
|
it = std::find(clients.begin(), clients.end(), mon);
|
||||||
if (it == clients.end())
|
if (it == clients.end())
|
||||||
@ -1013,16 +995,18 @@ void p3ConnectMgr::removeMonitor(pqiMonitor *mon)
|
|||||||
|
|
||||||
void p3ConnectMgr::tickMonitors()
|
void p3ConnectMgr::tickMonitors()
|
||||||
{
|
{
|
||||||
|
bool doStatusChange = false;
|
||||||
std::list<pqipeer> actionList;
|
std::list<pqipeer> actionList;
|
||||||
std::map<std::string, peerConnectState>::iterator it;
|
std::map<std::string, peerConnectState>::iterator it;
|
||||||
|
|
||||||
|
{
|
||||||
|
RsStackMutex stack(connMtx); /****** STACK LOCK MUTEX *******/
|
||||||
|
|
||||||
if (mStatusChanged)
|
if (mStatusChanged)
|
||||||
{
|
{
|
||||||
#ifdef CONN_DEBUG
|
#ifdef CONN_DEBUG
|
||||||
std::cerr << "p3ConnectMgr::tickMonitors() StatusChanged! List:" << std::endl;
|
std::cerr << "p3ConnectMgr::tickMonitors() StatusChanged! List:" << std::endl;
|
||||||
#endif
|
#endif
|
||||||
connMtx.lock(); /* LOCK MUTEX */
|
|
||||||
connMtx.unlock(); /* UNLOCK MUTEX */
|
|
||||||
/* assemble list */
|
/* assemble list */
|
||||||
for(it = mFriendList.begin(); it != mFriendList.end(); it++)
|
for(it = mFriendList.begin(); it != mFriendList.end(); it++)
|
||||||
{
|
{
|
||||||
@ -1121,7 +1105,18 @@ void p3ConnectMgr::tickMonitors()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
mStatusChanged = false;
|
mStatusChanged = false;
|
||||||
|
doStatusChange = true;
|
||||||
|
|
||||||
|
}
|
||||||
|
} /****** UNLOCK STACK MUTEX ******/
|
||||||
|
|
||||||
|
/* NOTE - clients is accessed without mutex protection!!!!
|
||||||
|
* At the moment this is okay - as they are only added at the start.
|
||||||
|
* IF this changes ---- must fix with second Mutex.
|
||||||
|
*/
|
||||||
|
|
||||||
|
if (doStatusChange)
|
||||||
|
{
|
||||||
#ifdef CONN_DEBUG
|
#ifdef CONN_DEBUG
|
||||||
std::cerr << "Sending to " << clients.size() << " monitorClients";
|
std::cerr << "Sending to " << clients.size() << " monitorClients";
|
||||||
std::cerr << std::endl;
|
std::cerr << std::endl;
|
||||||
@ -1153,25 +1148,23 @@ const std::string p3ConnectMgr::getOwnId()
|
|||||||
|
|
||||||
bool p3ConnectMgr::getOwnNetStatus(peerConnectState &state)
|
bool p3ConnectMgr::getOwnNetStatus(peerConnectState &state)
|
||||||
{
|
{
|
||||||
connMtx.lock(); /* LOCK MUTEX */
|
RsStackMutex stack(connMtx); /****** STACK LOCK MUTEX *******/
|
||||||
connMtx.unlock(); /* UNLOCK MUTEX */
|
|
||||||
state = ownState;
|
state = ownState;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool p3ConnectMgr::isFriend(std::string id)
|
bool p3ConnectMgr::isFriend(std::string id)
|
||||||
{
|
{
|
||||||
connMtx.lock(); /* LOCK MUTEX */
|
RsStackMutex stack(connMtx); /****** STACK LOCK MUTEX *******/
|
||||||
connMtx.unlock(); /* UNLOCK MUTEX */
|
|
||||||
return (mFriendList.end() != mFriendList.find(id));
|
return (mFriendList.end() != mFriendList.find(id));
|
||||||
}
|
}
|
||||||
|
|
||||||
bool p3ConnectMgr::getFriendNetStatus(std::string id, peerConnectState &state)
|
bool p3ConnectMgr::getFriendNetStatus(std::string id, peerConnectState &state)
|
||||||
{
|
{
|
||||||
|
RsStackMutex stack(connMtx); /****** STACK LOCK MUTEX *******/
|
||||||
|
|
||||||
/* check for existing */
|
/* check for existing */
|
||||||
std::map<std::string, peerConnectState>::iterator it;
|
std::map<std::string, peerConnectState>::iterator it;
|
||||||
connMtx.lock(); /* LOCK MUTEX */
|
|
||||||
connMtx.unlock(); /* UNLOCK MUTEX */
|
|
||||||
it = mFriendList.find(id);
|
it = mFriendList.find(id);
|
||||||
if (it == mFriendList.end())
|
if (it == mFriendList.end())
|
||||||
{
|
{
|
||||||
@ -1185,10 +1178,10 @@ bool p3ConnectMgr::getFriendNetStatus(std::string id, peerConnectState &state)
|
|||||||
|
|
||||||
bool p3ConnectMgr::getOthersNetStatus(std::string id, peerConnectState &state)
|
bool p3ConnectMgr::getOthersNetStatus(std::string id, peerConnectState &state)
|
||||||
{
|
{
|
||||||
|
RsStackMutex stack(connMtx); /****** STACK LOCK MUTEX *******/
|
||||||
|
|
||||||
/* check for existing */
|
/* check for existing */
|
||||||
std::map<std::string, peerConnectState>::iterator it;
|
std::map<std::string, peerConnectState>::iterator it;
|
||||||
connMtx.lock(); /* LOCK MUTEX */
|
|
||||||
connMtx.unlock(); /* UNLOCK MUTEX */
|
|
||||||
it = mOthersList.find(id);
|
it = mOthersList.find(id);
|
||||||
if (it == mOthersList.end())
|
if (it == mOthersList.end())
|
||||||
{
|
{
|
||||||
@ -1202,10 +1195,10 @@ bool p3ConnectMgr::getOthersNetStatus(std::string id, peerConnectState &state)
|
|||||||
|
|
||||||
void p3ConnectMgr::getOnlineList(std::list<std::string> &peers)
|
void p3ConnectMgr::getOnlineList(std::list<std::string> &peers)
|
||||||
{
|
{
|
||||||
|
RsStackMutex stack(connMtx); /****** STACK LOCK MUTEX *******/
|
||||||
|
|
||||||
/* check for existing */
|
/* check for existing */
|
||||||
std::map<std::string, peerConnectState>::iterator it;
|
std::map<std::string, peerConnectState>::iterator it;
|
||||||
connMtx.lock(); /* LOCK MUTEX */
|
|
||||||
connMtx.unlock(); /* UNLOCK MUTEX */
|
|
||||||
for(it = mFriendList.begin(); it != mFriendList.end(); it++)
|
for(it = mFriendList.begin(); it != mFriendList.end(); it++)
|
||||||
{
|
{
|
||||||
if (it->second.state & RS_PEER_S_CONNECTED)
|
if (it->second.state & RS_PEER_S_CONNECTED)
|
||||||
@ -1218,10 +1211,10 @@ void p3ConnectMgr::getOnlineList(std::list<std::string> &peers)
|
|||||||
|
|
||||||
void p3ConnectMgr::getFriendList(std::list<std::string> &peers)
|
void p3ConnectMgr::getFriendList(std::list<std::string> &peers)
|
||||||
{
|
{
|
||||||
|
RsStackMutex stack(connMtx); /****** STACK LOCK MUTEX *******/
|
||||||
|
|
||||||
/* check for existing */
|
/* check for existing */
|
||||||
std::map<std::string, peerConnectState>::iterator it;
|
std::map<std::string, peerConnectState>::iterator it;
|
||||||
connMtx.lock(); /* LOCK MUTEX */
|
|
||||||
connMtx.unlock(); /* UNLOCK MUTEX */
|
|
||||||
for(it = mFriendList.begin(); it != mFriendList.end(); it++)
|
for(it = mFriendList.begin(); it != mFriendList.end(); it++)
|
||||||
{
|
{
|
||||||
peers.push_back(it->first);
|
peers.push_back(it->first);
|
||||||
@ -1232,10 +1225,10 @@ void p3ConnectMgr::getFriendList(std::list<std::string> &peers)
|
|||||||
|
|
||||||
void p3ConnectMgr::getOthersList(std::list<std::string> &peers)
|
void p3ConnectMgr::getOthersList(std::list<std::string> &peers)
|
||||||
{
|
{
|
||||||
|
RsStackMutex stack(connMtx); /****** STACK LOCK MUTEX *******/
|
||||||
|
|
||||||
/* check for existing */
|
/* check for existing */
|
||||||
std::map<std::string, peerConnectState>::iterator it;
|
std::map<std::string, peerConnectState>::iterator it;
|
||||||
connMtx.lock(); /* LOCK MUTEX */
|
|
||||||
connMtx.unlock(); /* UNLOCK MUTEX */
|
|
||||||
for(it = mOthersList.begin(); it != mOthersList.end(); it++)
|
for(it = mOthersList.begin(); it != mOthersList.end(); it++)
|
||||||
{
|
{
|
||||||
peers.push_back(it->first);
|
peers.push_back(it->first);
|
||||||
@ -1249,10 +1242,10 @@ bool p3ConnectMgr::connectAttempt(std::string id, struct sockaddr_in &addr,
|
|||||||
uint32_t &delay, uint32_t &period, uint32_t &type)
|
uint32_t &delay, uint32_t &period, uint32_t &type)
|
||||||
|
|
||||||
{
|
{
|
||||||
|
RsStackMutex stack(connMtx); /****** STACK LOCK MUTEX *******/
|
||||||
|
|
||||||
/* check for existing */
|
/* check for existing */
|
||||||
std::map<std::string, peerConnectState>::iterator it;
|
std::map<std::string, peerConnectState>::iterator it;
|
||||||
connMtx.lock(); /* LOCK MUTEX */
|
|
||||||
connMtx.unlock(); /* UNLOCK MUTEX */
|
|
||||||
it = mFriendList.find(id);
|
it = mFriendList.find(id);
|
||||||
if (it == mFriendList.end())
|
if (it == mFriendList.end())
|
||||||
{
|
{
|
||||||
@ -1306,10 +1299,10 @@ bool p3ConnectMgr::connectAttempt(std::string id, struct sockaddr_in &addr,
|
|||||||
|
|
||||||
bool p3ConnectMgr::connectResult(std::string id, bool success, uint32_t flags)
|
bool p3ConnectMgr::connectResult(std::string id, bool success, uint32_t flags)
|
||||||
{
|
{
|
||||||
|
RsStackMutex stack(connMtx); /****** STACK LOCK MUTEX *******/
|
||||||
|
|
||||||
/* check for existing */
|
/* check for existing */
|
||||||
std::map<std::string, peerConnectState>::iterator it;
|
std::map<std::string, peerConnectState>::iterator it;
|
||||||
connMtx.lock(); /* LOCK MUTEX */
|
|
||||||
connMtx.unlock(); /* UNLOCK MUTEX */
|
|
||||||
it = mFriendList.find(id);
|
it = mFriendList.find(id);
|
||||||
if (it == mFriendList.end())
|
if (it == mFriendList.end())
|
||||||
{
|
{
|
||||||
@ -1396,6 +1389,22 @@ void p3ConnectMgr::peerStatus(std::string id,
|
|||||||
struct sockaddr_in laddr, struct sockaddr_in raddr,
|
struct sockaddr_in laddr, struct sockaddr_in raddr,
|
||||||
uint32_t type, uint32_t flags, uint32_t source)
|
uint32_t type, uint32_t flags, uint32_t source)
|
||||||
{
|
{
|
||||||
|
std::map<std::string, peerConnectState>::iterator it;
|
||||||
|
bool isFriend = true;
|
||||||
|
|
||||||
|
time_t now = time(NULL);
|
||||||
|
|
||||||
|
peerAddrInfo details;
|
||||||
|
details.type = type;
|
||||||
|
details.found = true;
|
||||||
|
details.laddr = laddr;
|
||||||
|
details.raddr = raddr;
|
||||||
|
details.ts = now;
|
||||||
|
|
||||||
|
|
||||||
|
{
|
||||||
|
RsStackMutex stack(connMtx); /****** STACK LOCK MUTEX *******/
|
||||||
|
|
||||||
std::cerr << "p3ConnectMgr::peerStatus()";
|
std::cerr << "p3ConnectMgr::peerStatus()";
|
||||||
std::cerr << " id: " << id;
|
std::cerr << " id: " << id;
|
||||||
std::cerr << " laddr: " << inet_ntoa(laddr.sin_addr);
|
std::cerr << " laddr: " << inet_ntoa(laddr.sin_addr);
|
||||||
@ -1408,10 +1417,6 @@ void p3ConnectMgr::peerStatus(std::string id,
|
|||||||
std::cerr << std::endl;
|
std::cerr << std::endl;
|
||||||
|
|
||||||
/* look up the id */
|
/* look up the id */
|
||||||
std::map<std::string, peerConnectState>::iterator it;
|
|
||||||
connMtx.lock(); /* LOCK MUTEX */
|
|
||||||
connMtx.unlock(); /* UNLOCK MUTEX */
|
|
||||||
bool isFriend = true;
|
|
||||||
it = mFriendList.find(id);
|
it = mFriendList.find(id);
|
||||||
if (it == mFriendList.end())
|
if (it == mFriendList.end())
|
||||||
{
|
{
|
||||||
@ -1434,14 +1439,6 @@ void p3ConnectMgr::peerStatus(std::string id,
|
|||||||
std::cerr << std::endl;
|
std::cerr << std::endl;
|
||||||
|
|
||||||
/* update the status */
|
/* update the status */
|
||||||
time_t now = time(NULL);
|
|
||||||
|
|
||||||
peerAddrInfo details;
|
|
||||||
details.type = type;
|
|
||||||
details.found = true;
|
|
||||||
details.laddr = laddr;
|
|
||||||
details.raddr = raddr;
|
|
||||||
details.ts = now;
|
|
||||||
|
|
||||||
/* if source is DHT */
|
/* if source is DHT */
|
||||||
if (source == RS_CB_DHT)
|
if (source == RS_CB_DHT)
|
||||||
@ -1693,14 +1690,18 @@ void p3ConnectMgr::peerStatus(std::string id,
|
|||||||
|
|
||||||
#endif // P3CONNMGR_NO_TCP_CONNECTIONS
|
#endif // P3CONNMGR_NO_TCP_CONNECTIONS
|
||||||
|
|
||||||
|
} /****** STACK UNLOCK MUTEX *******/
|
||||||
|
|
||||||
/* notify if they say we can, or we cannot connect ! */
|
/* notify if they say we can, or we cannot connect ! */
|
||||||
if (details.type & RS_NET_CONN_UDP_DHT_SYNC)
|
if (details.type & RS_NET_CONN_UDP_DHT_SYNC)
|
||||||
{
|
{
|
||||||
retryConnectNotify(id);
|
retryConnectNotify(id);
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
} // P3CONNMGR_NO_AUTO_CONNECTION /****** STACK UNLOCK MUTEX *******/
|
||||||
#endif // P3CONNMGR_NO_AUTO_CONNECTION
|
#endif // P3CONNMGR_NO_AUTO_CONNECTION
|
||||||
|
|
||||||
|
RsStackMutex stack(connMtx); /****** STACK LOCK MUTEX *******/
|
||||||
|
|
||||||
if (it->second.inConnAttempt)
|
if (it->second.inConnAttempt)
|
||||||
{
|
{
|
||||||
@ -1760,6 +1761,8 @@ void p3ConnectMgr::peerConnectRequest(std::string id, struct sockaddr_in radd
|
|||||||
|
|
||||||
/******************** UDP PART *****************************/
|
/******************** UDP PART *****************************/
|
||||||
|
|
||||||
|
RsStackMutex stack(connMtx); /****** STACK LOCK MUTEX *******/
|
||||||
|
|
||||||
if (ownState.netMode & RS_NET_MODE_UNREACHABLE)
|
if (ownState.netMode & RS_NET_MODE_UNREACHABLE)
|
||||||
{
|
{
|
||||||
std::cerr << "p3ConnectMgr::peerConnectRequest() Unreachable - no UDP connection";
|
std::cerr << "p3ConnectMgr::peerConnectRequest() Unreachable - no UDP connection";
|
||||||
@ -1769,8 +1772,6 @@ void p3ConnectMgr::peerConnectRequest(std::string id, struct sockaddr_in radd
|
|||||||
|
|
||||||
/* look up the id */
|
/* look up the id */
|
||||||
std::map<std::string, peerConnectState>::iterator it;
|
std::map<std::string, peerConnectState>::iterator it;
|
||||||
connMtx.lock(); /* LOCK MUTEX */
|
|
||||||
connMtx.unlock(); /* UNLOCK MUTEX */
|
|
||||||
bool isFriend = true;
|
bool isFriend = true;
|
||||||
it = mFriendList.find(id);
|
it = mFriendList.find(id);
|
||||||
if (it == mFriendList.end())
|
if (it == mFriendList.end())
|
||||||
@ -1864,9 +1865,6 @@ void p3ConnectMgr::peerConnectRequest(std::string id, struct sockaddr_in radd
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//void p3ConnectMgr::stunStatus(std::string id, struct sockaddr_in addr)
|
|
||||||
|
|
||||||
/*******************************************************************/
|
/*******************************************************************/
|
||||||
/*******************************************************************/
|
/*******************************************************************/
|
||||||
|
|
||||||
@ -1883,7 +1881,7 @@ bool p3ConnectMgr::addFriend(std::string id, uint32_t netMode, uint32_t visState
|
|||||||
std::cerr << std::endl;
|
std::cerr << std::endl;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
connMtx.lock(); /* LOCK MUTEX */
|
RsStackMutex stack(connMtx); /****** STACK LOCK MUTEX *******/
|
||||||
|
|
||||||
|
|
||||||
std::map<std::string, peerConnectState>::iterator it;
|
std::map<std::string, peerConnectState>::iterator it;
|
||||||
@ -1894,8 +1892,6 @@ bool p3ConnectMgr::addFriend(std::string id, uint32_t netMode, uint32_t visState
|
|||||||
std::cerr << std::endl;
|
std::cerr << std::endl;
|
||||||
#endif
|
#endif
|
||||||
/* (1) already exists */
|
/* (1) already exists */
|
||||||
|
|
||||||
connMtx.unlock(); /* UNLOCK MUTEX */
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1907,8 +1903,6 @@ bool p3ConnectMgr::addFriend(std::string id, uint32_t netMode, uint32_t visState
|
|||||||
std::cerr << std::endl;
|
std::cerr << std::endl;
|
||||||
#endif
|
#endif
|
||||||
/* no auth */
|
/* no auth */
|
||||||
|
|
||||||
connMtx.unlock(); /* UNLOCK MUTEX */
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1948,8 +1942,6 @@ bool p3ConnectMgr::addFriend(std::string id, uint32_t netMode, uint32_t visState
|
|||||||
mDhtMgr->findPeer(id);
|
mDhtMgr->findPeer(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
connMtx.unlock(); /* UNLOCK MUTEX */
|
|
||||||
|
|
||||||
IndicateConfigChanged(); /**** INDICATE MSG CONFIG CHANGED! *****/
|
IndicateConfigChanged(); /**** INDICATE MSG CONFIG CHANGED! *****/
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
@ -1964,8 +1956,6 @@ bool p3ConnectMgr::addFriend(std::string id, uint32_t netMode, uint32_t visState
|
|||||||
std::cerr << std::endl;
|
std::cerr << std::endl;
|
||||||
#endif
|
#endif
|
||||||
/* ERROR: no details */
|
/* ERROR: no details */
|
||||||
|
|
||||||
connMtx.unlock(); /* UNLOCK MUTEX */
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1996,8 +1986,6 @@ bool p3ConnectMgr::addFriend(std::string id, uint32_t netMode, uint32_t visState
|
|||||||
/* expect it to be a standard DHT */
|
/* expect it to be a standard DHT */
|
||||||
mDhtMgr->findPeer(id);
|
mDhtMgr->findPeer(id);
|
||||||
|
|
||||||
connMtx.unlock(); /* UNLOCK MUTEX */
|
|
||||||
|
|
||||||
IndicateConfigChanged(); /**** INDICATE MSG CONFIG CHANGED! *****/
|
IndicateConfigChanged(); /**** INDICATE MSG CONFIG CHANGED! *****/
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
@ -2014,7 +2002,7 @@ bool p3ConnectMgr::removeFriend(std::string id)
|
|||||||
|
|
||||||
mDhtMgr->dropPeer(id);
|
mDhtMgr->dropPeer(id);
|
||||||
|
|
||||||
connMtx.lock(); /* LOCK MUTEX */
|
RsStackMutex stack(connMtx); /****** STACK LOCK MUTEX *******/
|
||||||
|
|
||||||
/* move to othersList */
|
/* move to othersList */
|
||||||
bool success = false;
|
bool success = false;
|
||||||
@ -2037,8 +2025,6 @@ bool p3ConnectMgr::removeFriend(std::string id)
|
|||||||
success = true;
|
success = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
connMtx.unlock(); /* UNLOCK MUTEX */
|
|
||||||
|
|
||||||
IndicateConfigChanged(); /**** INDICATE MSG CONFIG CHANGED! *****/
|
IndicateConfigChanged(); /**** INDICATE MSG CONFIG CHANGED! *****/
|
||||||
|
|
||||||
return success;
|
return success;
|
||||||
@ -2060,20 +2046,18 @@ bool p3ConnectMgr::addNeighbour(std::string id)
|
|||||||
* (3) is non-existant -> create new one.
|
* (3) is non-existant -> create new one.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
connMtx.lock(); /* LOCK MUTEX */
|
RsStackMutex stack(connMtx); /****** STACK LOCK MUTEX *******/
|
||||||
|
|
||||||
std::map<std::string, peerConnectState>::iterator it;
|
std::map<std::string, peerConnectState>::iterator it;
|
||||||
if (mFriendList.end() == mFriendList.find(id))
|
if (mFriendList.end() == mFriendList.find(id))
|
||||||
{
|
{
|
||||||
/* (1) already exists */
|
/* (1) already exists */
|
||||||
connMtx.unlock(); /* UNLOCK MUTEX */
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mOthersList.end() == mOthersList.find(id))
|
if (mOthersList.end() == mOthersList.find(id))
|
||||||
{
|
{
|
||||||
/* (2) already exists */
|
/* (2) already exists */
|
||||||
connMtx.unlock(); /* UNLOCK MUTEX */
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2081,7 +2065,6 @@ bool p3ConnectMgr::addNeighbour(std::string id)
|
|||||||
if (!mAuthMgr->isValid(id))
|
if (!mAuthMgr->isValid(id))
|
||||||
{
|
{
|
||||||
/* no auth */
|
/* no auth */
|
||||||
connMtx.unlock(); /* UNLOCK MUTEX */
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2090,7 +2073,6 @@ bool p3ConnectMgr::addNeighbour(std::string id)
|
|||||||
if (!mAuthMgr->getDetails(id, detail))
|
if (!mAuthMgr->getDetails(id, detail))
|
||||||
{
|
{
|
||||||
/* no details */
|
/* no details */
|
||||||
connMtx.unlock(); /* UNLOCK MUTEX */
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2106,14 +2088,8 @@ bool p3ConnectMgr::addNeighbour(std::string id)
|
|||||||
pstate.netMode = RS_NET_MODE_UNKNOWN;
|
pstate.netMode = RS_NET_MODE_UNKNOWN;
|
||||||
|
|
||||||
/* addr & timestamps -> auto cleared */
|
/* addr & timestamps -> auto cleared */
|
||||||
|
|
||||||
mOthersList[id] = pstate;
|
mOthersList[id] = pstate;
|
||||||
|
|
||||||
// Nothing to notify anyone about... as no new information
|
|
||||||
//mStatusChanged = true;
|
|
||||||
|
|
||||||
connMtx.unlock(); /* UNLOCK MUTEX */
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2132,6 +2108,8 @@ bool p3ConnectMgr::retryConnect(std::string id)
|
|||||||
|
|
||||||
bool p3ConnectMgr::retryConnectTCP(std::string id)
|
bool p3ConnectMgr::retryConnectTCP(std::string id)
|
||||||
{
|
{
|
||||||
|
RsStackMutex stack(connMtx); /****** STACK LOCK MUTEX *******/
|
||||||
|
|
||||||
/* push addresses onto stack */
|
/* push addresses onto stack */
|
||||||
std::cerr << "p3ConnectMgr::retryConnectTCP()";
|
std::cerr << "p3ConnectMgr::retryConnectTCP()";
|
||||||
std::cerr << " id: " << id;
|
std::cerr << " id: " << id;
|
||||||
@ -2139,9 +2117,6 @@ bool p3ConnectMgr::retryConnectTCP(std::string id)
|
|||||||
|
|
||||||
/* look up the id */
|
/* look up the id */
|
||||||
std::map<std::string, peerConnectState>::iterator it;
|
std::map<std::string, peerConnectState>::iterator it;
|
||||||
connMtx.lock(); /* LOCK MUTEX */
|
|
||||||
connMtx.unlock(); /* UNLOCK MUTEX */
|
|
||||||
|
|
||||||
if (mFriendList.end() == (it = mFriendList.find(id)))
|
if (mFriendList.end() == (it = mFriendList.find(id)))
|
||||||
{
|
{
|
||||||
std::cerr << "p3ConnectMgr::retryConnectTCP() Peer is not Friend";
|
std::cerr << "p3ConnectMgr::retryConnectTCP() Peer is not Friend";
|
||||||
@ -2300,6 +2275,8 @@ bool p3ConnectMgr::retryConnectTCP(std::string id)
|
|||||||
|
|
||||||
bool p3ConnectMgr::retryConnectNotify(std::string id)
|
bool p3ConnectMgr::retryConnectNotify(std::string id)
|
||||||
{
|
{
|
||||||
|
RsStackMutex stack(connMtx); /****** STACK LOCK MUTEX *******/
|
||||||
|
|
||||||
/* push addresses onto stack */
|
/* push addresses onto stack */
|
||||||
std::cerr << "p3ConnectMgr::retryConnectNotify()";
|
std::cerr << "p3ConnectMgr::retryConnectNotify()";
|
||||||
std::cerr << " id: " << id;
|
std::cerr << " id: " << id;
|
||||||
@ -2307,8 +2284,6 @@ bool p3ConnectMgr::retryConnectNotify(std::string id)
|
|||||||
|
|
||||||
/* look up the id */
|
/* look up the id */
|
||||||
std::map<std::string, peerConnectState>::iterator it;
|
std::map<std::string, peerConnectState>::iterator it;
|
||||||
connMtx.lock(); /* LOCK MUTEX */
|
|
||||||
connMtx.unlock(); /* UNLOCK MUTEX */
|
|
||||||
|
|
||||||
if (mFriendList.end() == (it = mFriendList.find(id)))
|
if (mFriendList.end() == (it = mFriendList.find(id)))
|
||||||
{
|
{
|
||||||
@ -2353,8 +2328,8 @@ bool p3ConnectMgr::retryConnectNotify(std::string id)
|
|||||||
|
|
||||||
bool p3ConnectMgr::setLocalAddress(std::string id, struct sockaddr_in addr)
|
bool p3ConnectMgr::setLocalAddress(std::string id, struct sockaddr_in addr)
|
||||||
{
|
{
|
||||||
connMtx.lock(); /* LOCK MUTEX */
|
RsStackMutex stack(connMtx); /****** STACK LOCK MUTEX *******/
|
||||||
connMtx.unlock(); /* UNLOCK MUTEX */
|
|
||||||
if (id == mAuthMgr->OwnId())
|
if (id == mAuthMgr->OwnId())
|
||||||
{
|
{
|
||||||
ownState.localaddr = addr;
|
ownState.localaddr = addr;
|
||||||
@ -2381,8 +2356,9 @@ bool p3ConnectMgr::setLocalAddress(std::string id, struct sockaddr_in addr)
|
|||||||
|
|
||||||
bool p3ConnectMgr::setExtAddress(std::string id, struct sockaddr_in addr)
|
bool p3ConnectMgr::setExtAddress(std::string id, struct sockaddr_in addr)
|
||||||
{
|
{
|
||||||
connMtx.lock(); /* LOCK MUTEX */
|
RsStackMutex stack(connMtx); /****** STACK LOCK MUTEX *******/
|
||||||
connMtx.unlock(); /* UNLOCK MUTEX */
|
|
||||||
|
|
||||||
if (id == mAuthMgr->OwnId())
|
if (id == mAuthMgr->OwnId())
|
||||||
{
|
{
|
||||||
ownState.serveraddr = addr;
|
ownState.serveraddr = addr;
|
||||||
@ -2417,6 +2393,8 @@ bool p3ConnectMgr::setNetworkMode(std::string id, uint32_t netMode)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
RsStackMutex stack(connMtx); /****** STACK LOCK MUTEX *******/
|
||||||
|
|
||||||
/* check if it is a friend */
|
/* check if it is a friend */
|
||||||
std::map<std::string, peerConnectState>::iterator it;
|
std::map<std::string, peerConnectState>::iterator it;
|
||||||
if (mFriendList.end() == (it = mFriendList.find(id)))
|
if (mFriendList.end() == (it = mFriendList.find(id)))
|
||||||
@ -2431,9 +2409,6 @@ bool p3ConnectMgr::setNetworkMode(std::string id, uint32_t netMode)
|
|||||||
it->second.netMode = netMode;
|
it->second.netMode = netMode;
|
||||||
IndicateConfigChanged(); /**** INDICATE MSG CONFIG CHANGED! *****/
|
IndicateConfigChanged(); /**** INDICATE MSG CONFIG CHANGED! *****/
|
||||||
|
|
||||||
|
|
||||||
connMtx.lock(); /* LOCK MUTEX */
|
|
||||||
connMtx.unlock(); /* UNLOCK MUTEX */
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2447,6 +2422,8 @@ bool p3ConnectMgr::setVisState(std::string id, uint32_t visState)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
RsStackMutex stack(connMtx); /****** STACK LOCK MUTEX *******/
|
||||||
|
|
||||||
/* check if it is a friend */
|
/* check if it is a friend */
|
||||||
std::map<std::string, peerConnectState>::iterator it;
|
std::map<std::string, peerConnectState>::iterator it;
|
||||||
bool isFriend = false;
|
bool isFriend = false;
|
||||||
@ -2480,9 +2457,6 @@ bool p3ConnectMgr::setVisState(std::string id, uint32_t visState)
|
|||||||
|
|
||||||
IndicateConfigChanged(); /**** INDICATE MSG CONFIG CHANGED! *****/
|
IndicateConfigChanged(); /**** INDICATE MSG CONFIG CHANGED! *****/
|
||||||
|
|
||||||
|
|
||||||
connMtx.lock(); /* LOCK MUTEX */
|
|
||||||
connMtx.unlock(); /* UNLOCK MUTEX */
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2515,8 +2489,8 @@ bool p3ConnectMgr::checkNetAddress()
|
|||||||
std::list<std::string> addrs = getLocalInterfaces();
|
std::list<std::string> addrs = getLocalInterfaces();
|
||||||
std::list<std::string>::iterator it;
|
std::list<std::string>::iterator it;
|
||||||
|
|
||||||
connMtx.lock(); /* LOCK MUTEX */
|
RsStackMutex stack(connMtx); /****** STACK LOCK MUTEX *******/
|
||||||
connMtx.unlock(); /* UNLOCK MUTEX */
|
|
||||||
bool found = false;
|
bool found = false;
|
||||||
for(it = addrs.begin(); (!found) && (it != addrs.end()); it++)
|
for(it = addrs.begin(); (!found) && (it != addrs.end()); it++)
|
||||||
{
|
{
|
||||||
@ -2608,8 +2582,7 @@ std::list<RsItem *> p3ConnectMgr::saveList(bool &cleanup)
|
|||||||
std::list<RsItem *> saveData;
|
std::list<RsItem *> saveData;
|
||||||
cleanup = true;
|
cleanup = true;
|
||||||
|
|
||||||
connMtx.lock(); /* LOCK MUTEX */
|
RsStackMutex stack(connMtx); /****** STACK LOCK MUTEX *******/
|
||||||
connMtx.unlock(); /* UNLOCK MUTEX */
|
|
||||||
|
|
||||||
RsPeerNetItem *item = new RsPeerNetItem();
|
RsPeerNetItem *item = new RsPeerNetItem();
|
||||||
item->clear();
|
item->clear();
|
||||||
@ -2694,6 +2667,7 @@ bool p3ConnectMgr::loadList(std::list<RsItem *> load)
|
|||||||
std::cerr << std::endl;
|
std::cerr << std::endl;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/* load the list of peers */
|
/* load the list of peers */
|
||||||
std::list<RsItem *>::iterator it;
|
std::list<RsItem *>::iterator it;
|
||||||
for(it = load.begin(); it != load.end(); it++)
|
for(it = load.begin(); it != load.end(); it++)
|
||||||
@ -2732,6 +2706,7 @@ bool p3ConnectMgr::loadList(std::list<RsItem *> load)
|
|||||||
}
|
}
|
||||||
else if (sitem)
|
else if (sitem)
|
||||||
{
|
{
|
||||||
|
RsStackMutex stack(connMtx); /****** STACK LOCK MUTEX *******/
|
||||||
#ifdef CONN_DEBUG
|
#ifdef CONN_DEBUG
|
||||||
std::cerr << "p3ConnectMgr::loadList() Stun Config Item:";
|
std::cerr << "p3ConnectMgr::loadList() Stun Config Item:";
|
||||||
std::cerr << std::endl;
|
std::cerr << std::endl;
|
||||||
@ -2746,8 +2721,6 @@ bool p3ConnectMgr::loadList(std::list<RsItem *> load)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
connMtx.lock(); /* LOCK MUTEX */
|
|
||||||
connMtx.unlock(); /* UNLOCK MUTEX */
|
|
||||||
delete (*it);
|
delete (*it);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
@ -89,7 +89,7 @@ virtual bool getRankDetails(std::string rid, RsRankDetails &details) = 0;
|
|||||||
virtual std::string newRankMsg(std::wstring link, std::wstring title, std::wstring comment, int32_t score) = 0;
|
virtual std::string newRankMsg(std::wstring link, std::wstring title, std::wstring comment, int32_t score) = 0;
|
||||||
virtual bool updateComment(std::string rid, std::wstring comment, int32_t score) = 0;
|
virtual bool updateComment(std::string rid, std::wstring comment, int32_t score) = 0;
|
||||||
|
|
||||||
virtual std::string anonRankMsg(std::wstring link, std::wstring title) = 0;
|
virtual std::string anonRankMsg(std::string rid, std::wstring link, std::wstring title) = 0;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -97,8 +97,8 @@ bool p3Rank::updateComment(std::string rid, std::wstring comment, int32_t score)
|
|||||||
return mRank->updateComment(rid, comment, score);
|
return mRank->updateComment(rid, comment, score);
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string p3Rank::anonRankMsg(std::wstring link, std::wstring title)
|
std::string p3Rank::anonRankMsg(std::string rid, std::wstring link, std::wstring title)
|
||||||
{
|
{
|
||||||
return mRank->anonRankMsg(link, title);
|
return mRank->anonRankMsg(rid, link, title);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -54,7 +54,7 @@ virtual bool getRankDetails(std::string rid, RsRankDetails &details);
|
|||||||
/* Add New Comment / Msg */
|
/* Add New Comment / Msg */
|
||||||
virtual std::string newRankMsg(std::wstring link, std::wstring title, std::wstring comment, int32_t score);
|
virtual std::string newRankMsg(std::wstring link, std::wstring title, std::wstring comment, int32_t score);
|
||||||
virtual bool updateComment(std::string rid, std::wstring comment, int32_t score);
|
virtual bool updateComment(std::string rid, std::wstring comment, int32_t score);
|
||||||
virtual std::string anonRankMsg(std::wstring link, std::wstring title);
|
virtual std::string anonRankMsg(std::string rid, std::wstring link, std::wstring title);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
|
@ -997,10 +997,16 @@ bool p3Ranking::updateComment(std::string rid, std::wstring comment, int32_t sco
|
|||||||
/*************************************************************************/
|
/*************************************************************************/
|
||||||
/****************************** LINK SPECIFIC ****************************/
|
/****************************** LINK SPECIFIC ****************************/
|
||||||
/*************************************************************************/
|
/*************************************************************************/
|
||||||
std::string p3Ranking::anonRankMsg(std::wstring link, std::wstring title)
|
std::string p3Ranking::anonRankMsg(std::string rid, std::wstring link, std::wstring title)
|
||||||
{
|
{
|
||||||
/* generate an id */
|
bool alreadyExists = true;
|
||||||
std::string rid = generateRandomLinkId();
|
|
||||||
|
if (rid == "")
|
||||||
|
{
|
||||||
|
alreadyExists = false;
|
||||||
|
/* generate an id */
|
||||||
|
rid = generateRandomLinkId();
|
||||||
|
}
|
||||||
|
|
||||||
RsRankLinkMsg *msg1 = new RsRankLinkMsg();
|
RsRankLinkMsg *msg1 = new RsRankLinkMsg();
|
||||||
RsRankLinkMsg *msg2 = new RsRankLinkMsg();
|
RsRankLinkMsg *msg2 = new RsRankLinkMsg();
|
||||||
@ -1034,7 +1040,15 @@ std::string p3Ranking::anonRankMsg(std::wstring link, std::wstring title)
|
|||||||
msg2->linktype = RS_LINK_TYPE_WEB;
|
msg2->linktype = RS_LINK_TYPE_WEB;
|
||||||
msg2->link = link;
|
msg2->link = link;
|
||||||
|
|
||||||
addRankMsg(msg1);
|
if (alreadyExists)
|
||||||
|
{
|
||||||
|
delete msg1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
addRankMsg(msg1);
|
||||||
|
}
|
||||||
|
|
||||||
addAnonToList(msg2);
|
addAnonToList(msg2);
|
||||||
|
|
||||||
return rid;
|
return rid;
|
||||||
@ -1202,6 +1216,19 @@ bool p3Ranking::addAnonToList(RsRankLinkMsg *msg)
|
|||||||
{
|
{
|
||||||
{
|
{
|
||||||
RsStackMutex stack(mRankMtx); /********** STACK LOCKED MTX ******/
|
RsStackMutex stack(mRankMtx); /********** STACK LOCKED MTX ******/
|
||||||
|
std::list<RsRankLinkMsg *>::iterator it;
|
||||||
|
for(it = mAnon.begin(); it != mAnon.end(); it++)
|
||||||
|
{
|
||||||
|
if (msg->rid == (*it)->rid)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (it != mAnon.end())
|
||||||
|
{
|
||||||
|
delete msg;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
mAnon.push_back(msg);
|
mAnon.push_back(msg);
|
||||||
mRepublishFriends = true;
|
mRepublishFriends = true;
|
||||||
}
|
}
|
||||||
|
@ -103,7 +103,7 @@ virtual bool getRankDetails(std::string rid, RsRankDetails &details);
|
|||||||
/* Add New Comment / Msg */
|
/* Add New Comment / Msg */
|
||||||
virtual std::string newRankMsg(std::wstring link, std::wstring title, std::wstring comment, int32_t score);
|
virtual std::string newRankMsg(std::wstring link, std::wstring title, std::wstring comment, int32_t score);
|
||||||
virtual bool updateComment(std::string rid, std::wstring comment, int32_t score);
|
virtual bool updateComment(std::string rid, std::wstring comment, int32_t score);
|
||||||
virtual std::string anonRankMsg(std::wstring link, std::wstring title);
|
virtual std::string anonRankMsg(std::string rid, std::wstring link, std::wstring title);
|
||||||
|
|
||||||
|
|
||||||
void tick();
|
void tick();
|
||||||
|
Loading…
Reference in New Issue
Block a user