diff --git a/src/io/pipeer.cpp b/src/io/pipeer.cpp index 2dc7f0da..637dc72c 100755 --- a/src/io/pipeer.cpp +++ b/src/io/pipeer.cpp @@ -235,7 +235,7 @@ bool PIPeer::send(const PIString & to, const void * data, int size) { ba << int(4) << self_info.name << to << int(0) << size; PIByteArray fmsg(data, size), cmsg; int msg_count = (size - 1) / _PIPEER_MSG_SIZE + 1; - piCout << "[PIPeer] send" << size << "bytes in" << msg_count << "packets ..."; + //piCout << "[PIPeer] send" << size << "bytes in" << msg_count << "packets ..."; for (int i = 0; i < msg_count; ++i) { int csize = (i == msg_count - 1) ? ((size - 1) % _PIPEER_MSG_SIZE + 1) : _PIPEER_MSG_SIZE; cmsg = ba; @@ -243,7 +243,7 @@ bool PIPeer::send(const PIString & to, const void * data, int size) { cmsg.append(fmsg.data(i * _PIPEER_MSG_SIZE), csize); if (!sendToNeighbour(dp, cmsg)) return false; } - piCout << "[PIPeer] send" << size << "bytes ok"; + //piCout << "[PIPeer] send" << size << "bytes ok"; return true; } @@ -279,17 +279,19 @@ bool PIPeer::dataRead(uchar * readed, int size) { } return true; } - // send ping back - piForeachC (PeerInfo & p, peers) { - if (!p.isNeighbour()) continue; - if (p.name != to) continue; - sba = PIByteArray(readed, size); - //piCout << "ping from" << to << addr << ", send back to" << p.name; - piForeachC (PeerInfo::Address & a, p.addresses) { - if (eth_send.send(a.address, sba)) - diag_s.received(sba.size_s()); + if (from == self_info.name) { // send ping back + const PeerInfo * pi = getPeerByName(to); + if (pi) { + if (pi->isNeighbour()) { + sba = PIByteArray(readed, size); + //piCout << "ping from" << to << addr << ", send back to" << p.name; + piForeachC (PeerInfo::Address & a, pi->addresses) { + if (eth_send.send(a.address, sba)) + diag_s.received(sba.size_s()); + } + } + return true; } - return true; } //PIEthernet * eth = (PIEthernet*)emitter(); //()->send(); @@ -467,7 +469,7 @@ bool PIPeer::mbcastRead(uchar * data, int size) { bool PIPeer::sendToNeighbour(PIPeer::PeerInfo * peer, const PIByteArray & ba) { //if (peer->_neth == 0) return false; PIString addr = peer->fastestAddress(); - piCout << "[PIPeer] sendToNeighbour" << peer->name << addr << ba.size_s() << "bytes ..."; + //piCout << "[PIPeer] sendToNeighbour" << peer->name << addr << ba.size_s() << "bytes ..."; //bool ok = peer->_neth->send(peer->_naddress, ba.data(), ba.size_s()); bool ok = eth_send.send(addr, ba); //piCout << "[PIPeer] sendToNeighbour" << (ok ? "ok" : "fail"); @@ -522,7 +524,7 @@ void PIPeer::pingNeighbours() { ba << int(5) << self_info.name; //piCout << "pingNeighbours" << peers.size(); piForeach (PeerInfo & p, peers) { - piCout << " ping neighbour" << p.name << p.ping(); + //piCout << " ping neighbour" << p.name << p.ping(); if (!p.isNeighbour()) continue; piForeach (PeerInfo::Address & a, p.addresses) { //piCout << " address" << a.address << a.wait_ping;