mirror of
https://github.com/Xahau/xahaud.git
synced 2025-12-06 17:27:52 +00:00
Release the master lock sooner.
This commit is contained in:
@@ -512,7 +512,7 @@ void Peer::processReadBuffer()
|
|||||||
ripple::TMGetPeers msg;
|
ripple::TMGetPeers msg;
|
||||||
|
|
||||||
if (msg.ParseFromArray(&mReadbuf[HEADER_SIZE], mReadbuf.size() - HEADER_SIZE))
|
if (msg.ParseFromArray(&mReadbuf[HEADER_SIZE], mReadbuf.size() - HEADER_SIZE))
|
||||||
recvGetPeers(msg);
|
recvGetPeers(msg, sl);
|
||||||
else
|
else
|
||||||
cLog(lsWARNING) << "parse error: " << type;
|
cLog(lsWARNING) << "parse error: " << type;
|
||||||
}
|
}
|
||||||
@@ -568,7 +568,7 @@ void Peer::processReadBuffer()
|
|||||||
event->reName("Peer::transaction");
|
event->reName("Peer::transaction");
|
||||||
ripple::TMTransaction msg;
|
ripple::TMTransaction msg;
|
||||||
if (msg.ParseFromArray(&mReadbuf[HEADER_SIZE], mReadbuf.size() - HEADER_SIZE))
|
if (msg.ParseFromArray(&mReadbuf[HEADER_SIZE], mReadbuf.size() - HEADER_SIZE))
|
||||||
recvTransaction(msg);
|
recvTransaction(msg, sl);
|
||||||
else
|
else
|
||||||
cLog(lsWARNING) << "parse error: " << type;
|
cLog(lsWARNING) << "parse error: " << type;
|
||||||
}
|
}
|
||||||
@@ -634,7 +634,7 @@ void Peer::processReadBuffer()
|
|||||||
event->reName("Peer::validation");
|
event->reName("Peer::validation");
|
||||||
boost::shared_ptr<ripple::TMValidation> msg = boost::make_shared<ripple::TMValidation>();
|
boost::shared_ptr<ripple::TMValidation> msg = boost::make_shared<ripple::TMValidation>();
|
||||||
if (msg->ParseFromArray(&mReadbuf[HEADER_SIZE], mReadbuf.size() - HEADER_SIZE))
|
if (msg->ParseFromArray(&mReadbuf[HEADER_SIZE], mReadbuf.size() - HEADER_SIZE))
|
||||||
recvValidation(msg);
|
recvValidation(msg, sl);
|
||||||
else
|
else
|
||||||
cLog(lsWARNING) << "parse error: " << type;
|
cLog(lsWARNING) << "parse error: " << type;
|
||||||
}
|
}
|
||||||
@@ -864,15 +864,15 @@ static void checkTransaction(Job&, int flags, SerializedTransaction::pointer stx
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void Peer::recvTransaction(ripple::TMTransaction& packet)
|
void Peer::recvTransaction(ripple::TMTransaction& packet, ScopedLock& MasterLockHolder)
|
||||||
{
|
{
|
||||||
|
MasterLockHolder.unlock();
|
||||||
Transaction::pointer tx;
|
Transaction::pointer tx;
|
||||||
#ifndef TRUST_NETWORK
|
#ifndef TRUST_NETWORK
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
#endif
|
#endif
|
||||||
std::string rawTx = packet.rawtransaction();
|
Serializer s(packet.rawtransaction());
|
||||||
Serializer s(rawTx);
|
|
||||||
SerializerIterator sit(s);
|
SerializerIterator sit(s);
|
||||||
SerializedTransaction::pointer stx = boost::make_shared<SerializedTransaction>(boost::ref(sit));
|
SerializedTransaction::pointer stx = boost::make_shared<SerializedTransaction>(boost::ref(sit));
|
||||||
|
|
||||||
@@ -1084,8 +1084,9 @@ static void checkValidation(Job&, SerializedValidation::pointer val, uint256 sig
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void Peer::recvValidation(const boost::shared_ptr<ripple::TMValidation>& packet)
|
void Peer::recvValidation(const boost::shared_ptr<ripple::TMValidation>& packet, ScopedLock& MasterLockHolder)
|
||||||
{
|
{
|
||||||
|
MasterLockHolder.unlock();
|
||||||
if (packet->validation().size() < 50)
|
if (packet->validation().size() < 50)
|
||||||
{
|
{
|
||||||
cLog(lsWARNING) << "Too small validation from peer";
|
cLog(lsWARNING) << "Too small validation from peer";
|
||||||
@@ -1137,8 +1138,9 @@ void Peer::recvGetContacts(ripple::TMGetContacts& packet)
|
|||||||
// Return a list of your favorite people
|
// Return a list of your favorite people
|
||||||
// TODO: filter out all the LAN peers
|
// TODO: filter out all the LAN peers
|
||||||
// TODO: filter out the peer you are talking to
|
// TODO: filter out the peer you are talking to
|
||||||
void Peer::recvGetPeers(ripple::TMGetPeers& packet)
|
void Peer::recvGetPeers(ripple::TMGetPeers& packet, ScopedLock& MasterLockHolder)
|
||||||
{
|
{
|
||||||
|
MasterLockHolder.unlock();
|
||||||
std::vector<std::string> addrs;
|
std::vector<std::string> addrs;
|
||||||
|
|
||||||
theApp->getConnectionPool().getTopNAddrs(30, addrs);
|
theApp->getConnectionPool().getTopNAddrs(30, addrs);
|
||||||
|
|||||||
@@ -87,12 +87,12 @@ protected:
|
|||||||
void sendHello();
|
void sendHello();
|
||||||
|
|
||||||
void recvHello(ripple::TMHello& packet);
|
void recvHello(ripple::TMHello& packet);
|
||||||
void recvTransaction(ripple::TMTransaction& packet);
|
void recvTransaction(ripple::TMTransaction& packet, ScopedLock& MasterLockHolder);
|
||||||
void recvValidation(const boost::shared_ptr<ripple::TMValidation>& packet);
|
void recvValidation(const boost::shared_ptr<ripple::TMValidation>& packet, ScopedLock& MasterLockHolder);
|
||||||
void recvGetValidation(ripple::TMGetValidations& packet);
|
void recvGetValidation(ripple::TMGetValidations& packet);
|
||||||
void recvContact(ripple::TMContact& packet);
|
void recvContact(ripple::TMContact& packet);
|
||||||
void recvGetContacts(ripple::TMGetContacts& packet);
|
void recvGetContacts(ripple::TMGetContacts& packet);
|
||||||
void recvGetPeers(ripple::TMGetPeers& packet);
|
void recvGetPeers(ripple::TMGetPeers& packet, ScopedLock& MasterLockHolder);
|
||||||
void recvPeers(ripple::TMPeers& packet);
|
void recvPeers(ripple::TMPeers& packet);
|
||||||
void recvGetObjectByHash(const boost::shared_ptr<ripple::TMGetObjectByHash>& packet);
|
void recvGetObjectByHash(const boost::shared_ptr<ripple::TMGetObjectByHash>& packet);
|
||||||
void recvPing(ripple::TMPing& packet);
|
void recvPing(ripple::TMPing& packet);
|
||||||
|
|||||||
Reference in New Issue
Block a user