peer deadlock
git-svn-id: svn://db.shs.com.ru/pip@37 12ceb7fc-bf1f-11e4-8940-5bc7170c53b5
This commit is contained in:
@@ -400,11 +400,14 @@ bool PIPeer::mbcastRead(uchar * data, int size) {
|
||||
pi.dist++;
|
||||
sendSelfInfo();
|
||||
sendPeerInfo(pi);
|
||||
peerConnected(pi.name);
|
||||
peerConnectedEvent(pi.name);
|
||||
ch = true;
|
||||
//piCout << "new peer packet ok";
|
||||
}
|
||||
peers_mutex.unlock();
|
||||
if (ch) {
|
||||
peerConnected(pi.name);
|
||||
peerConnectedEvent(pi.name);
|
||||
}
|
||||
break;
|
||||
case 2: // remove peer
|
||||
//piCout << "remove peer packet ..." << pi.name;
|
||||
@@ -420,11 +423,14 @@ bool PIPeer::mbcastRead(uchar * data, int size) {
|
||||
self_info.removeNeighbour(pi.name);
|
||||
sendPeerRemove(pi.name);
|
||||
buildMap();
|
||||
peerDisconnected(pi.name);
|
||||
peerDisconnectedEvent(pi.name);
|
||||
ch = true;
|
||||
//piCout << "remove peer packet ok";
|
||||
}
|
||||
peers_mutex.unlock();
|
||||
if (ch) {
|
||||
peerDisconnected(pi.name);
|
||||
peerDisconnectedEvent(pi.name);
|
||||
}
|
||||
break;
|
||||
case 3: // sync peers
|
||||
//piCout << "sync packet ...";
|
||||
|
||||
@@ -117,8 +117,8 @@ public:
|
||||
const PeerInfo & selfInfo() const {return self_info;}
|
||||
const PIMap<PIString, PIVector<PeerInfo * > > & _peerMap() const {return addresses_map;}
|
||||
|
||||
void lock() {mc_mutex.lock(); peers_mutex.lock();}
|
||||
void unlock() {mc_mutex.unlock(); peers_mutex.unlock();}
|
||||
void lock() {peers_mutex.lock();}
|
||||
void unlock() {peers_mutex.unlock();}
|
||||
|
||||
EVENT2(dataReceivedEvent, const PIString &, from, const PIByteArray &, data);
|
||||
EVENT1(peerConnectedEvent, const PIString &, name);
|
||||
|
||||
Reference in New Issue
Block a user