git-svn-id: svn://db.shs.com.ru/pip@405 12ceb7fc-bf1f-11e4-8940-5bc7170c53b5
This commit is contained in:
@@ -445,7 +445,8 @@ bool PIPeer::dataRead(uchar * readed, int size) {
|
|||||||
int type, cnt;
|
int type, cnt;
|
||||||
PIString from, to;
|
PIString from, to;
|
||||||
ba >> type;
|
ba >> type;
|
||||||
PIMutexLocker locker(eth_mutex);
|
// PIMutexLocker locker(eth_mutex);
|
||||||
|
eth_mutex.lock();
|
||||||
piCout << "dataRead lock";
|
piCout << "dataRead lock";
|
||||||
if (type == 5) { // ping request
|
if (type == 5) { // ping request
|
||||||
PIString addr;
|
PIString addr;
|
||||||
@@ -468,6 +469,7 @@ bool PIPeer::dataRead(uchar * readed, int size) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
eth_mutex.unlock();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
if (type == 6) { // ping request
|
if (type == 6) { // ping request
|
||||||
@@ -489,14 +491,19 @@ bool PIPeer::dataRead(uchar * readed, int size) {
|
|||||||
if (a.ping < 0) a.ping = ptime.toMilliseconds();
|
if (a.ping < 0) a.ping = ptime.toMilliseconds();
|
||||||
else a.ping = 0.6 * a.ping + 0.4 * ptime.toMilliseconds();
|
else a.ping = 0.6 * a.ping + 0.4 * ptime.toMilliseconds();
|
||||||
// piCout << " ping echo" << p.name << a.address << a.ping;
|
// piCout << " ping echo" << p.name << a.address << a.ping;
|
||||||
|
eth_mutex.unlock();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
eth_mutex.unlock();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
// piCoutObj << "received data from" << from << "packet" << type;
|
// piCoutObj << "received data from" << from << "packet" << type;
|
||||||
if (type != 4) return true;
|
if (type != 4) {
|
||||||
|
eth_mutex.unlock();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
diag_d.received(size);
|
diag_d.received(size);
|
||||||
ba >> from >> to >> cnt >> pba;
|
ba >> from >> to >> cnt >> pba;
|
||||||
//piCoutObj << "Received packet" << type << from << to << pba.size_s();
|
//piCoutObj << "Received packet" << type << from << to << pba.size_s();
|
||||||
@@ -508,26 +515,31 @@ bool PIPeer::dataRead(uchar * readed, int size) {
|
|||||||
PeerInfo * fp = const_cast<PeerInfo * >(getPeerByName(from));
|
PeerInfo * fp = const_cast<PeerInfo * >(getPeerByName(from));
|
||||||
if (fp == 0) {
|
if (fp == 0) {
|
||||||
peers_mutex.unlock();
|
peers_mutex.unlock();
|
||||||
|
eth_mutex.unlock();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
if (pt == 1) {
|
if (pt == 1) {
|
||||||
peers_mutex.unlock();
|
peers_mutex.unlock();
|
||||||
|
eth_mutex.unlock();
|
||||||
dtReceived(from, pba);
|
dtReceived(from, pba);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
if (pt == 2 || pt == 3) {
|
if (pt == 2 || pt == 3) {
|
||||||
peers_mutex.unlock();
|
peers_mutex.unlock();
|
||||||
|
eth_mutex.unlock();
|
||||||
if (fp->_data)
|
if (fp->_data)
|
||||||
fp->_data->receivedPacket(pt, pba);
|
fp->_data->receivedPacket(pt, pba);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
peers_mutex.unlock();
|
peers_mutex.unlock();
|
||||||
|
eth_mutex.unlock();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
PIMutexLocker plocker(peers_mutex);
|
PIMutexLocker plocker(peers_mutex);
|
||||||
PeerInfo * dp = quickestPeer(to);
|
PeerInfo * dp = quickestPeer(to);
|
||||||
if (dp == 0) {
|
if (dp == 0) {
|
||||||
//piCoutObj << "Can`t find peer \"" << to << "\"!";
|
//piCoutObj << "Can`t find peer \"" << to << "\"!";
|
||||||
|
eth_mutex.unlock();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
cnt++;
|
cnt++;
|
||||||
@@ -536,6 +548,7 @@ bool PIPeer::dataRead(uchar * readed, int size) {
|
|||||||
//piCout << "translate packet" << from << "->" << to << ", ttl =" << cnt;
|
//piCout << "translate packet" << from << "->" << to << ", ttl =" << cnt;
|
||||||
sendToNeighbour(dp, sba);
|
sendToNeighbour(dp, sba);
|
||||||
}
|
}
|
||||||
|
eth_mutex.unlock();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user