mirror of
https://github.com/XRPLF/rippled.git
synced 2025-12-06 01:07:57 +00:00
Merge branch 'master' of github.com:jedmccaleb/NewCoin
This commit is contained in:
@@ -7,6 +7,8 @@
|
|||||||
#include "Log.h"
|
#include "Log.h"
|
||||||
SETUP_LOG();
|
SETUP_LOG();
|
||||||
|
|
||||||
|
// Logic to handle incoming HTTP reqests
|
||||||
|
|
||||||
void HTTPRequest::reset()
|
void HTTPRequest::reset()
|
||||||
{
|
{
|
||||||
vHeaders.clear();
|
vHeaders.clear();
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ enum HTTPRequestAction
|
|||||||
};
|
};
|
||||||
|
|
||||||
class HTTPRequest
|
class HTTPRequest
|
||||||
{ // an HTTP request in progress
|
{ // an HTTP request we are handling from a client
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
enum state
|
enum state
|
||||||
|
|||||||
@@ -954,6 +954,40 @@ int Ledger::getLedgerHashOffset(uint32 desiredLedgerIndex, uint32 currentLedgerI
|
|||||||
return currentLedgerIndex - desiredLedgerIndex - 1;
|
return currentLedgerIndex - desiredLedgerIndex - 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
uint256 Ledger::getLedgerHash(uint32 ledgerIndex)
|
||||||
|
{ // return the hash of the specified ledger, 0 if not available
|
||||||
|
|
||||||
|
// easy cases
|
||||||
|
if (ledgerIndex > mLedgerSeq)
|
||||||
|
return uint256();
|
||||||
|
if (ledgerIndex == mLedgerSeq)
|
||||||
|
return getHash();
|
||||||
|
if (ledgerIndex == (mLedgerSeq - 1))
|
||||||
|
return mParentHash;
|
||||||
|
|
||||||
|
// within 255
|
||||||
|
int offset = getLedgerHashOffset(ledgerIndex, mLedgerSeq);
|
||||||
|
if (offset != -1)
|
||||||
|
{
|
||||||
|
SLE::pointer hashIndex = getSLE(getLedgerHashIndex());
|
||||||
|
if (hashIndex)
|
||||||
|
return hashIndex->getFieldV256(sfHashes).peekValue().at(offset);
|
||||||
|
else
|
||||||
|
assert(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((ledgerIndex & 0xff) != 0)
|
||||||
|
return uint256();
|
||||||
|
|
||||||
|
SLE::pointer hashIndex = getSLE(getLedgerHashIndex(ledgerIndex));
|
||||||
|
if (hashIndex)
|
||||||
|
return hashIndex->getFieldV256(sfHashes).peekValue().at(getLedgerHashOffset(ledgerIndex, mLedgerSeq));
|
||||||
|
else
|
||||||
|
assert(false);
|
||||||
|
|
||||||
|
return uint256();
|
||||||
|
}
|
||||||
|
|
||||||
uint256 Ledger::getBookBase(const uint160& uTakerPaysCurrency, const uint160& uTakerPaysIssuerID,
|
uint256 Ledger::getBookBase(const uint160& uTakerPaysCurrency, const uint160& uTakerPaysIssuerID,
|
||||||
const uint160& uTakerGetsCurrency, const uint160& uTakerGetsIssuerID)
|
const uint160& uTakerGetsCurrency, const uint160& uTakerGetsIssuerID)
|
||||||
{
|
{
|
||||||
@@ -1112,7 +1146,6 @@ void Ledger::updateSkipList()
|
|||||||
if (!skipList)
|
if (!skipList)
|
||||||
{
|
{
|
||||||
skipList = boost::make_shared<SLE>(ltLEDGER_HASHES, hash);
|
skipList = boost::make_shared<SLE>(ltLEDGER_HASHES, hash);
|
||||||
skipList->setFieldU32(sfFirstLedgerSequence, prevIndex);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
hashes = skipList->getFieldV256(sfHashes).peekValue();
|
hashes = skipList->getFieldV256(sfHashes).peekValue();
|
||||||
@@ -1135,7 +1168,6 @@ void Ledger::updateSkipList()
|
|||||||
if (!skipList)
|
if (!skipList)
|
||||||
{
|
{
|
||||||
skipList = boost::make_shared<SLE>(ltLEDGER_HASHES, hash);
|
skipList = boost::make_shared<SLE>(ltLEDGER_HASHES, hash);
|
||||||
skipList->setFieldU32(sfFirstLedgerSequence, prevIndex);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
hashes = skipList->getFieldV256(sfHashes).peekValue();
|
hashes = skipList->getFieldV256(sfHashes).peekValue();
|
||||||
|
|||||||
@@ -198,6 +198,7 @@ public:
|
|||||||
static uint256 getLedgerHashIndex(uint32 desiredLedgerIndex);
|
static uint256 getLedgerHashIndex(uint32 desiredLedgerIndex);
|
||||||
static int getLedgerHashOffset(uint32 desiredLedgerIndex);
|
static int getLedgerHashOffset(uint32 desiredLedgerIndex);
|
||||||
static int getLedgerHashOffset(uint32 desiredLedgerIndex, uint32 currentLedgerIndex);
|
static int getLedgerHashOffset(uint32 desiredLedgerIndex, uint32 currentLedgerIndex);
|
||||||
|
uint256 getLedgerHash(uint32 ledgerIndex);
|
||||||
|
|
||||||
static uint256 getLedgerFeatureIndex();
|
static uint256 getLedgerFeatureIndex();
|
||||||
static uint256 getLedgerFeeIndex();
|
static uint256 getLedgerFeeIndex();
|
||||||
|
|||||||
@@ -96,7 +96,7 @@ static bool LEFInit()
|
|||||||
;
|
;
|
||||||
|
|
||||||
DECLARE_LEF(LedgerHashes, ltLEDGER_HASHES)
|
DECLARE_LEF(LedgerHashes, ltLEDGER_HASHES)
|
||||||
<< SOElement(sfFirstLedgerSequence, SOE_OPTIONAL)
|
<< SOElement(sfFirstLedgerSequence, SOE_OPTIONAL) // Remove if we do a ledger restart
|
||||||
<< SOElement(sfLastLedgerSequence, SOE_OPTIONAL)
|
<< SOElement(sfLastLedgerSequence, SOE_OPTIONAL)
|
||||||
<< SOElement(sfHashes, SOE_REQUIRED)
|
<< SOElement(sfHashes, SOE_REQUIRED)
|
||||||
;
|
;
|
||||||
|
|||||||
@@ -540,6 +540,7 @@ bool SHAMap::delItem(const uint256& id)
|
|||||||
SHAMapItem::pointer item = onlyBelow(node.get());
|
SHAMapItem::pointer item = onlyBelow(node.get());
|
||||||
if (item)
|
if (item)
|
||||||
{
|
{
|
||||||
|
returnNode(node, true);
|
||||||
eraseChildren(node);
|
eraseChildren(node);
|
||||||
#ifdef ST_DEBUG
|
#ifdef ST_DEBUG
|
||||||
std::cerr << "Making item node " << *node << std::endl;
|
std::cerr << "Making item node " << *node << std::endl;
|
||||||
|
|||||||
@@ -56,7 +56,7 @@
|
|||||||
FIELD(BondAmount, UINT32, 23)
|
FIELD(BondAmount, UINT32, 23)
|
||||||
FIELD(LoadFee, UINT32, 24)
|
FIELD(LoadFee, UINT32, 24)
|
||||||
FIELD(OfferSequence, UINT32, 25)
|
FIELD(OfferSequence, UINT32, 25)
|
||||||
FIELD(FirstLedgerSequence, UINT32, 26)
|
FIELD(FirstLedgerSequence, UINT32, 26) // Deprecated: do not use
|
||||||
FIELD(LastLedgerSequence, UINT32, 27)
|
FIELD(LastLedgerSequence, UINT32, 27)
|
||||||
FIELD(TransactionIndex, UINT32, 28)
|
FIELD(TransactionIndex, UINT32, 28)
|
||||||
FIELD(OperationLimit, UINT32, 29)
|
FIELD(OperationLimit, UINT32, 29)
|
||||||
|
|||||||
Reference in New Issue
Block a user