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++;
|
pi.dist++;
|
||||||
sendSelfInfo();
|
sendSelfInfo();
|
||||||
sendPeerInfo(pi);
|
sendPeerInfo(pi);
|
||||||
peerConnected(pi.name);
|
ch = true;
|
||||||
peerConnectedEvent(pi.name);
|
|
||||||
//piCout << "new peer packet ok";
|
//piCout << "new peer packet ok";
|
||||||
}
|
}
|
||||||
peers_mutex.unlock();
|
peers_mutex.unlock();
|
||||||
|
if (ch) {
|
||||||
|
peerConnected(pi.name);
|
||||||
|
peerConnectedEvent(pi.name);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case 2: // remove peer
|
case 2: // remove peer
|
||||||
//piCout << "remove peer packet ..." << pi.name;
|
//piCout << "remove peer packet ..." << pi.name;
|
||||||
@@ -420,11 +423,14 @@ bool PIPeer::mbcastRead(uchar * data, int size) {
|
|||||||
self_info.removeNeighbour(pi.name);
|
self_info.removeNeighbour(pi.name);
|
||||||
sendPeerRemove(pi.name);
|
sendPeerRemove(pi.name);
|
||||||
buildMap();
|
buildMap();
|
||||||
peerDisconnected(pi.name);
|
ch = true;
|
||||||
peerDisconnectedEvent(pi.name);
|
|
||||||
//piCout << "remove peer packet ok";
|
//piCout << "remove peer packet ok";
|
||||||
}
|
}
|
||||||
peers_mutex.unlock();
|
peers_mutex.unlock();
|
||||||
|
if (ch) {
|
||||||
|
peerDisconnected(pi.name);
|
||||||
|
peerDisconnectedEvent(pi.name);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case 3: // sync peers
|
case 3: // sync peers
|
||||||
//piCout << "sync packet ...";
|
//piCout << "sync packet ...";
|
||||||
|
|||||||
@@ -117,8 +117,8 @@ public:
|
|||||||
const PeerInfo & selfInfo() const {return self_info;}
|
const PeerInfo & selfInfo() const {return self_info;}
|
||||||
const PIMap<PIString, PIVector<PeerInfo * > > & _peerMap() const {return addresses_map;}
|
const PIMap<PIString, PIVector<PeerInfo * > > & _peerMap() const {return addresses_map;}
|
||||||
|
|
||||||
void lock() {mc_mutex.lock(); peers_mutex.lock();}
|
void lock() {peers_mutex.lock();}
|
||||||
void unlock() {mc_mutex.unlock(); peers_mutex.unlock();}
|
void unlock() {peers_mutex.unlock();}
|
||||||
|
|
||||||
EVENT2(dataReceivedEvent, const PIString &, from, const PIByteArray &, data);
|
EVENT2(dataReceivedEvent, const PIString &, from, const PIByteArray &, data);
|
||||||
EVENT1(peerConnectedEvent, const PIString &, name);
|
EVENT1(peerConnectedEvent, const PIString &, name);
|
||||||
|
|||||||
Reference in New Issue
Block a user