Deadlock fix.

This commit is contained in:
JoelKatz
2013-05-23 02:03:31 -07:00
parent 62751f8eef
commit 7dc3335147
2 changed files with 4 additions and 3 deletions

View File

@@ -612,7 +612,7 @@ void Peer::processReadBuffer()
event->reName("Peer::ledgerdata"); event->reName("Peer::ledgerdata");
boost::shared_ptr<ripple::TMLedgerData> msg = boost::make_shared<ripple::TMLedgerData>(); boost::shared_ptr<ripple::TMLedgerData> msg = boost::make_shared<ripple::TMLedgerData>();
if (msg->ParseFromArray(&mReadbuf[HEADER_SIZE], mReadbuf.size() - HEADER_SIZE)) if (msg->ParseFromArray(&mReadbuf[HEADER_SIZE], mReadbuf.size() - HEADER_SIZE))
recvLedger(msg); recvLedger(msg, sl);
else else
cLog(lsWARNING) << "parse error: " << type; cLog(lsWARNING) << "parse error: " << type;
} }
@@ -1663,8 +1663,9 @@ void Peer::recvGetLedger(ripple::TMGetLedger& packet, ScopedLock& MasterLockHold
sendPacket(oPacket, true); sendPacket(oPacket, true);
} }
void Peer::recvLedger(const boost::shared_ptr<ripple::TMLedgerData>& packet_ptr) void Peer::recvLedger(const boost::shared_ptr<ripple::TMLedgerData>& packet_ptr, ScopedLock& MasterLockHolder)
{ {
MasterLockHolder.unlock();
ripple::TMLedgerData& packet = *packet_ptr; ripple::TMLedgerData& packet = *packet_ptr;
if (packet.nodes().size() <= 0) if (packet.nodes().size() <= 0)
{ {

View File

@@ -101,7 +101,7 @@ protected:
void recvGetAccount(ripple::TMGetAccount& packet); void recvGetAccount(ripple::TMGetAccount& packet);
void recvAccount(ripple::TMAccount& packet); void recvAccount(ripple::TMAccount& packet);
void recvGetLedger(ripple::TMGetLedger& packet, ScopedLock& MasterLockHolder); void recvGetLedger(ripple::TMGetLedger& packet, ScopedLock& MasterLockHolder);
void recvLedger(const boost::shared_ptr<ripple::TMLedgerData>& packet); void recvLedger(const boost::shared_ptr<ripple::TMLedgerData>& packet, ScopedLock& MasterLockHolder);
void recvStatus(ripple::TMStatusChange& packet); void recvStatus(ripple::TMStatusChange& packet);
void recvPropose(const boost::shared_ptr<ripple::TMProposeSet>& packet); void recvPropose(const boost::shared_ptr<ripple::TMProposeSet>& packet);
void recvHaveTxSet(ripple::TMHaveTransactionSet& packet); void recvHaveTxSet(ripple::TMHaveTransactionSet& packet);