mirror of
https://github.com/Xahau/xahaud.git
synced 2025-12-06 17:27:52 +00:00
Bugfix. New LedgerAcquire not added to hash.
This commit is contained in:
@@ -8,11 +8,16 @@
|
|||||||
LedgerAcquire::LedgerAcquire(const uint256& hash) : mHash(hash),
|
LedgerAcquire::LedgerAcquire(const uint256& hash) : mHash(hash),
|
||||||
mComplete(false), mFailed(false), mHaveBase(false), mHaveState(false), mHaveTransactions(false)
|
mComplete(false), mFailed(false), mHaveBase(false), mHaveState(false), mHaveTransactions(false)
|
||||||
{
|
{
|
||||||
;
|
#ifdef DEBUG
|
||||||
|
std::cerr << "Acquiring ledger " << mHash.GetHex() << std::endl;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void LedgerAcquire::done()
|
void LedgerAcquire::done()
|
||||||
{
|
{
|
||||||
|
#ifdef DEBUG
|
||||||
|
std::cerr << "Done acquiring ledger " << mHash.GetHex() << std::endl;
|
||||||
|
#endif
|
||||||
std::vector< boost::function<void (LedgerAcquire::pointer)> > triggers;
|
std::vector< boost::function<void (LedgerAcquire::pointer)> > triggers;
|
||||||
|
|
||||||
mLock.lock();
|
mLock.lock();
|
||||||
@@ -44,10 +49,16 @@ void LedgerAcquire::addOnComplete(boost::function<void (LedgerAcquire::pointer)>
|
|||||||
|
|
||||||
void LedgerAcquire::trigger(bool timer)
|
void LedgerAcquire::trigger(bool timer)
|
||||||
{
|
{
|
||||||
|
#ifdef DEBUG
|
||||||
|
std::cerr << "Trigger acquiring ledger " << mHash.GetHex() << std::endl;
|
||||||
|
#endif
|
||||||
if (mComplete || mFailed) return;
|
if (mComplete || mFailed) return;
|
||||||
|
|
||||||
if (!mHaveBase)
|
if (!mHaveBase)
|
||||||
{
|
{
|
||||||
|
#ifdef DEBUG
|
||||||
|
std::cerr << "need base" << std::endl;
|
||||||
|
#endif
|
||||||
boost::shared_ptr<newcoin::TMGetLedger> tmGL = boost::make_shared<newcoin::TMGetLedger>();
|
boost::shared_ptr<newcoin::TMGetLedger> tmGL = boost::make_shared<newcoin::TMGetLedger>();
|
||||||
tmGL->set_ledgerhash(mHash.begin(), mHash.size());
|
tmGL->set_ledgerhash(mHash.begin(), mHash.size());
|
||||||
tmGL->set_itype(newcoin::liBASE);
|
tmGL->set_itype(newcoin::liBASE);
|
||||||
@@ -56,6 +67,9 @@ void LedgerAcquire::trigger(bool timer)
|
|||||||
|
|
||||||
if (mHaveBase && !mHaveTransactions)
|
if (mHaveBase && !mHaveTransactions)
|
||||||
{
|
{
|
||||||
|
#ifdef DEBUG
|
||||||
|
std::cerr << "need tx" << std::endl;
|
||||||
|
#endif
|
||||||
assert(mLedger);
|
assert(mLedger);
|
||||||
if (mLedger->peekTransactionMap()->getHash().isZero())
|
if (mLedger->peekTransactionMap()->getHash().isZero())
|
||||||
{ // we need the root node
|
{ // we need the root node
|
||||||
@@ -95,6 +109,9 @@ void LedgerAcquire::trigger(bool timer)
|
|||||||
|
|
||||||
if (mHaveBase && !mHaveState)
|
if (mHaveBase && !mHaveState)
|
||||||
{
|
{
|
||||||
|
#ifdef DEBUG
|
||||||
|
std::cerr << "need as" << std::endl;
|
||||||
|
#endif
|
||||||
assert(mLedger);
|
assert(mLedger);
|
||||||
if (mLedger->peekAccountStateMap()->getHash().isZero())
|
if (mLedger->peekAccountStateMap()->getHash().isZero())
|
||||||
{ // we need the root node
|
{ // we need the root node
|
||||||
@@ -200,6 +217,9 @@ void LedgerAcquire::badPeer(Peer::pointer ptr)
|
|||||||
|
|
||||||
bool LedgerAcquire::takeBase(const std::string& data)
|
bool LedgerAcquire::takeBase(const std::string& data)
|
||||||
{ // Return value: true=normal, false=bad data
|
{ // Return value: true=normal, false=bad data
|
||||||
|
#ifdef DEBUG
|
||||||
|
std::cerr << "got base acquiring ledger " << mHash.GetHex() << std::endl;
|
||||||
|
#endif
|
||||||
boost::recursive_mutex::scoped_lock sl(mLock);
|
boost::recursive_mutex::scoped_lock sl(mLock);
|
||||||
if (mHaveBase) return true;
|
if (mHaveBase) return true;
|
||||||
mLedger = boost::make_shared<Ledger>(data);
|
mLedger = boost::make_shared<Ledger>(data);
|
||||||
@@ -235,6 +255,9 @@ bool LedgerAcquire::takeTxNode(const std::list<SHAMapNode>& nodeIDs,
|
|||||||
bool LedgerAcquire::takeAsNode(const std::list<SHAMapNode>& nodeIDs,
|
bool LedgerAcquire::takeAsNode(const std::list<SHAMapNode>& nodeIDs,
|
||||||
const std::list<std::vector<unsigned char> >& data)
|
const std::list<std::vector<unsigned char> >& data)
|
||||||
{
|
{
|
||||||
|
#ifdef DEBUG
|
||||||
|
std::cerr << "got ASdata acquiring ledger " << mHash.GetHex() << std::endl;
|
||||||
|
#endif
|
||||||
if (!mHaveBase) return false;
|
if (!mHaveBase) return false;
|
||||||
std::list<SHAMapNode>::const_iterator nodeIDit = nodeIDs.begin();
|
std::list<SHAMapNode>::const_iterator nodeIDit = nodeIDs.begin();
|
||||||
std::list<std::vector<unsigned char> >::const_iterator nodeDatait = data.begin();
|
std::list<std::vector<unsigned char> >::const_iterator nodeDatait = data.begin();
|
||||||
@@ -253,8 +276,13 @@ LedgerAcquire::pointer LedgerAcquireMaster::findCreate(const uint256& hash)
|
|||||||
{
|
{
|
||||||
boost::mutex::scoped_lock sl(mLock);
|
boost::mutex::scoped_lock sl(mLock);
|
||||||
LedgerAcquire::pointer& ptr = mLedgers[hash];
|
LedgerAcquire::pointer& ptr = mLedgers[hash];
|
||||||
if (ptr) return ptr;
|
if (ptr)
|
||||||
return boost::make_shared<LedgerAcquire>(hash);
|
{
|
||||||
|
ptr->trigger();
|
||||||
|
return ptr;
|
||||||
|
}
|
||||||
|
ptr = boost::make_shared<LedgerAcquire>(hash);
|
||||||
|
return ptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
LedgerAcquire::pointer LedgerAcquireMaster::find(const uint256& hash)
|
LedgerAcquire::pointer LedgerAcquireMaster::find(const uint256& hash)
|
||||||
@@ -279,9 +307,21 @@ bool LedgerAcquireMaster::dropLedger(const uint256& hash)
|
|||||||
|
|
||||||
bool LedgerAcquireMaster::gotLedgerData(newcoin::TMLedgerData& packet)
|
bool LedgerAcquireMaster::gotLedgerData(newcoin::TMLedgerData& packet)
|
||||||
{
|
{
|
||||||
|
#ifdef DEBUG
|
||||||
|
std::cerr << "got data for acquiring ledger ";
|
||||||
|
#endif
|
||||||
uint256 hash;
|
uint256 hash;
|
||||||
if (packet.ledgerhash().size() != 32) return false;
|
if (packet.ledgerhash().size() != 32)
|
||||||
|
{
|
||||||
|
#ifdef DEBUG
|
||||||
|
std::cerr << "error" << std::endl;
|
||||||
|
#endif
|
||||||
|
return false;
|
||||||
|
}
|
||||||
memcpy(&hash, packet.ledgerhash().data(), 32);
|
memcpy(&hash, packet.ledgerhash().data(), 32);
|
||||||
|
#ifdef DEBUG
|
||||||
|
std::cerr << hash.GetHex() << std::endl;
|
||||||
|
#endif
|
||||||
|
|
||||||
LedgerAcquire::pointer ledger=find(hash);
|
LedgerAcquire::pointer ledger=find(hash);
|
||||||
if (!ledger) return false;
|
if (!ledger) return false;
|
||||||
|
|||||||
Reference in New Issue
Block a user