Merge branch 'master' of github.com:jedmccaleb/NewCoin

This commit is contained in:
Arthur Britto
2012-12-29 14:43:07 -08:00
7 changed files with 42 additions and 6 deletions

View File

@@ -7,6 +7,8 @@
#include "Log.h"
SETUP_LOG();
// Logic to handle incoming HTTP reqests
void HTTPRequest::reset()
{
vHeaders.clear();

View File

@@ -16,7 +16,7 @@ enum HTTPRequestAction
};
class HTTPRequest
{ // an HTTP request in progress
{ // an HTTP request we are handling from a client
protected:
enum state

View File

@@ -954,6 +954,40 @@ int Ledger::getLedgerHashOffset(uint32 desiredLedgerIndex, uint32 currentLedgerI
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,
const uint160& uTakerGetsCurrency, const uint160& uTakerGetsIssuerID)
{
@@ -1112,7 +1146,6 @@ void Ledger::updateSkipList()
if (!skipList)
{
skipList = boost::make_shared<SLE>(ltLEDGER_HASHES, hash);
skipList->setFieldU32(sfFirstLedgerSequence, prevIndex);
}
else
hashes = skipList->getFieldV256(sfHashes).peekValue();
@@ -1135,7 +1168,6 @@ void Ledger::updateSkipList()
if (!skipList)
{
skipList = boost::make_shared<SLE>(ltLEDGER_HASHES, hash);
skipList->setFieldU32(sfFirstLedgerSequence, prevIndex);
}
else
hashes = skipList->getFieldV256(sfHashes).peekValue();

View File

@@ -198,6 +198,7 @@ public:
static uint256 getLedgerHashIndex(uint32 desiredLedgerIndex);
static int getLedgerHashOffset(uint32 desiredLedgerIndex);
static int getLedgerHashOffset(uint32 desiredLedgerIndex, uint32 currentLedgerIndex);
uint256 getLedgerHash(uint32 ledgerIndex);
static uint256 getLedgerFeatureIndex();
static uint256 getLedgerFeeIndex();

View File

@@ -96,7 +96,7 @@ static bool LEFInit()
;
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(sfHashes, SOE_REQUIRED)
;

View File

@@ -540,6 +540,7 @@ bool SHAMap::delItem(const uint256& id)
SHAMapItem::pointer item = onlyBelow(node.get());
if (item)
{
returnNode(node, true);
eraseChildren(node);
#ifdef ST_DEBUG
std::cerr << "Making item node " << *node << std::endl;

View File

@@ -56,7 +56,7 @@
FIELD(BondAmount, UINT32, 23)
FIELD(LoadFee, UINT32, 24)
FIELD(OfferSequence, UINT32, 25)
FIELD(FirstLedgerSequence, UINT32, 26)
FIELD(FirstLedgerSequence, UINT32, 26) // Deprecated: do not use
FIELD(LastLedgerSequence, UINT32, 27)
FIELD(TransactionIndex, UINT32, 28)
FIELD(OperationLimit, UINT32, 29)