Santize locally submited transactions.

This commit is contained in:
Arthur Britto
2012-07-18 14:48:50 -07:00
parent f8882b32bf
commit af92bb5347
3 changed files with 39 additions and 17 deletions

View File

@@ -44,6 +44,24 @@ uint32 NetworkOPs::getCurrentLedgerID()
return mLedgerMaster->getCurrentLedger()->getLedgerSeq(); return mLedgerMaster->getCurrentLedger()->getLedgerSeq();
} }
// Sterilize transaction through serialization.
void NetworkOPs::submitTransaction(Transaction::pointer tpTrans)
{
Serializer s;
tpTrans->getSTransaction()->add(s);
std::vector<unsigned char> vucTransaction = s.getData();
SerializerIterator sit(s);
Transaction::pointer tpTransNew = Transaction::sharedTransaction(s.getData(), true);
assert(tpTransNew);
(void) NetworkOPs::processTransaction(tpTransNew);
}
Transaction::pointer NetworkOPs::processTransaction(Transaction::pointer trans, uint32 tgtLedger, Peer* source) Transaction::pointer NetworkOPs::processTransaction(Transaction::pointer trans, uint32 tgtLedger, Peer* source)
{ {
Transaction::pointer dbtx = theApp->getMasterTransaction().fetch(trans->getID(), true); Transaction::pointer dbtx = theApp->getMasterTransaction().fetch(trans->getID(), true);

View File

@@ -100,7 +100,11 @@ public:
uint256 getCurrentLedger() uint256 getCurrentLedger()
{ return mLedgerMaster->getCurrentLedger()->getHash(); } { return mLedgerMaster->getCurrentLedger()->getHash(); }
// transaction operations //
// Transaction operations
//
void submitTransaction(Transaction::pointer tpTrans);
Transaction::pointer processTransaction(Transaction::pointer transaction, uint32 targetLedger = 0, Transaction::pointer processTransaction(Transaction::pointer transaction, uint32 targetLedger = 0,
Peer* source = NULL); Peer* source = NULL);
Transaction::pointer findTransactionByID(const uint256& transactionID); Transaction::pointer findTransactionByID(const uint256& transactionID);

View File

@@ -463,7 +463,7 @@ Json::Value RPCServer::doAccountEmailSet(const Json::Value &params)
uint256(), uint256(),
NewcoinAddress()); NewcoinAddress());
(void) mNetOps->processTransaction(trans); (void) mNetOps->submitTransaction(trans);
obj["transaction"] = trans->getSTransaction()->getJson(0); obj["transaction"] = trans->getSTransaction()->getJson(0);
obj["status"] = trans->getStatus(); obj["status"] = trans->getStatus();
@@ -572,7 +572,7 @@ Json::Value RPCServer::doAccountMessageSet(const Json::Value& params) {
uint256(), uint256(),
naMessagePubKey); naMessagePubKey);
(void) mNetOps->processTransaction(trans); (void) mNetOps->submitTransaction(trans);
obj["transaction"] = trans->getSTransaction()->getJson(0); obj["transaction"] = trans->getSTransaction()->getJson(0);
obj["status"] = trans->getStatus(); obj["status"] = trans->getStatus();
@@ -624,7 +624,7 @@ Json::Value RPCServer::doAccountWalletSet(const Json::Value& params) {
uWalletLocator, uWalletLocator,
NewcoinAddress()); NewcoinAddress());
(void) mNetOps->processTransaction(trans); (void) mNetOps->submitTransaction(trans);
obj["transaction"] = trans->getSTransaction()->getJson(0); obj["transaction"] = trans->getSTransaction()->getJson(0);
obj["status"] = trans->getStatus(); obj["status"] = trans->getStatus();
@@ -822,7 +822,7 @@ Json::Value RPCServer::doNicknameSet(const Json::Value& params)
saMinimumOffer, saMinimumOffer,
vucSignature); vucSignature);
(void) mNetOps->processTransaction(trans); (void) mNetOps->submitTransaction(trans);
obj["transaction"] = trans->getSTransaction()->getJson(0); obj["transaction"] = trans->getSTransaction()->getJson(0);
obj["status"] = trans->getStatus(); obj["status"] = trans->getStatus();
@@ -897,7 +897,7 @@ Json::Value RPCServer::doOfferCreate(const Json::Value &params)
saTakerGets, saTakerGets,
uExpiration); uExpiration);
(void) mNetOps->processTransaction(trans); (void) mNetOps->submitTransaction(trans);
obj["transaction"] = trans->getSTransaction()->getJson(0); obj["transaction"] = trans->getSTransaction()->getJson(0);
obj["status"] = trans->getStatus(); obj["status"] = trans->getStatus();
@@ -940,7 +940,7 @@ Json::Value RPCServer::doOfferCancel(const Json::Value &params)
0, // YYY No source tag 0, // YYY No source tag
uSequence); uSequence);
(void) mNetOps->processTransaction(trans); (void) mNetOps->submitTransaction(trans);
obj["transaction"] = trans->getSTransaction()->getJson(0); obj["transaction"] = trans->getSTransaction()->getJson(0);
obj["status"] = trans->getStatus(); obj["status"] = trans->getStatus();
@@ -1026,7 +1026,7 @@ Json::Value RPCServer::doPasswordFund(const Json::Value &params)
0, // YYY No source tag 0, // YYY No source tag
naDstAccountID); naDstAccountID);
(void) mNetOps->processTransaction(trans); (void) mNetOps->submitTransaction(trans);
obj["transaction"] = trans->getSTransaction()->getJson(0); obj["transaction"] = trans->getSTransaction()->getJson(0);
obj["status"] = trans->getStatus(); obj["status"] = trans->getStatus();
@@ -1112,7 +1112,7 @@ Json::Value RPCServer::doPasswordSet(const Json::Value& params)
naRegular0Public.getAccountPublic(), naRegular0Public.getAccountPublic(),
vucGeneratorSig); vucGeneratorSig);
(void) mNetOps->processTransaction(trns); (void) mNetOps->submitTransaction(trns);
Json::Value obj(Json::objectValue); Json::Value obj(Json::objectValue);
@@ -1186,7 +1186,7 @@ Json::Value RPCServer::doRippleLineSet(const Json::Value& params)
saLimitAmount, saLimitAmount,
uAcceptRate); uAcceptRate);
(void) mNetOps->processTransaction(trans); (void) mNetOps->submitTransaction(trans);
obj["transaction"] = trans->getSTransaction()->getJson(0); obj["transaction"] = trans->getSTransaction()->getJson(0);
obj["status"] = trans->getStatus(); obj["status"] = trans->getStatus();
@@ -1274,7 +1274,7 @@ Json::Value RPCServer::doRippleLinesGet(const Json::Value &params)
// Amount reported is positive if current account hold's other account's IOUs. // Amount reported is positive if current account hold's other account's IOUs.
// Amount reported is negative if other account hold's current account's IOUs. // Amount reported is negative if other account hold's current account's IOUs.
jPeer["balance"] = saBalance.getText(); jPeer["balance"] = saBalance.getText();
jPeer["currency"] = saBalance.getCurrencyHuman(); jPeer["currency"] = saBalance.getHumanCurrency();
jPeer["limit"] = saLimit.getText(); jPeer["limit"] = saLimit.getText();
jPeer["limit_peer"] = saLimitPeer.getText(); jPeer["limit_peer"] = saLimitPeer.getText();
@@ -1424,7 +1424,7 @@ Json::Value RPCServer::doSend(const Json::Value& params)
saDstAmount); // Initial funds in XNS. saDstAmount); // Initial funds in XNS.
} }
(void) mNetOps->processTransaction(trans); (void) mNetOps->submitTransaction(trans);
obj["transaction"] = trans->getSTransaction()->getJson(0); obj["transaction"] = trans->getSTransaction()->getJson(0);
obj["status"] = trans->getStatus(); obj["status"] = trans->getStatus();
@@ -1434,9 +1434,9 @@ Json::Value RPCServer::doSend(const Json::Value& params)
obj["srcAccountID"] = naSrcAccountID.humanAccountID(); obj["srcAccountID"] = naSrcAccountID.humanAccountID();
obj["dstAccountID"] = naDstAccountID.humanAccountID(); obj["dstAccountID"] = naDstAccountID.humanAccountID();
obj["srcAmount"] = saSrcAmount.getText(); obj["srcAmount"] = saSrcAmount.getText();
obj["srcISO"] = saSrcAmount.getCurrencyHuman(); obj["srcISO"] = saSrcAmount.getHumanCurrency();
obj["dstAmount"] = saDstAmount.getText(); obj["dstAmount"] = saDstAmount.getText();
obj["dstISO"] = saDstAmount.getCurrencyHuman(); obj["dstISO"] = saDstAmount.getHumanCurrency();
return obj; return obj;
} }
@@ -1810,7 +1810,7 @@ Json::Value RPCServer::doWalletAdd(const Json::Value& params)
naNewAccountPublic, naNewAccountPublic,
vucSignature); vucSignature);
(void) mNetOps->processTransaction(trans); (void) mNetOps->submitTransaction(trans);
obj["transaction"] = trans->getSTransaction()->getJson(0); obj["transaction"] = trans->getSTransaction()->getJson(0);
obj["status"] = trans->getStatus(); obj["status"] = trans->getStatus();
@@ -1885,7 +1885,7 @@ Json::Value RPCServer::doWalletClaim(const Json::Value& params)
naRegular0Public.getAccountPublic(), naRegular0Public.getAccountPublic(),
vucGeneratorSig); vucGeneratorSig);
(void) mNetOps->processTransaction(trns); (void) mNetOps->submitTransaction(trns);
Json::Value obj(Json::objectValue); Json::Value obj(Json::objectValue);
@@ -1963,7 +1963,7 @@ Json::Value RPCServer::doWalletCreate(const Json::Value& params)
naDstAccountID, naDstAccountID,
saInitialFunds); // Initial funds in XNC. saInitialFunds); // Initial funds in XNC.
(void) mNetOps->processTransaction(trans); (void) mNetOps->submitTransaction(trans);
obj["transaction"] = trans->getSTransaction()->getJson(0); obj["transaction"] = trans->getSTransaction()->getJson(0);
obj["status"] = trans->getStatus(); obj["status"] = trans->getStatus();