diff --git a/src/NetworkOPs.cpp b/src/NetworkOPs.cpp index 683f7d0c02..a8de542b8c 100644 --- a/src/NetworkOPs.cpp +++ b/src/NetworkOPs.cpp @@ -44,6 +44,24 @@ uint32 NetworkOPs::getCurrentLedgerID() return mLedgerMaster->getCurrentLedger()->getLedgerSeq(); } +// Sterilize transaction through serialization. +void NetworkOPs::submitTransaction(Transaction::pointer tpTrans) +{ + Serializer s; + + tpTrans->getSTransaction()->add(s); + + std::vector 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 dbtx = theApp->getMasterTransaction().fetch(trans->getID(), true); diff --git a/src/NetworkOPs.h b/src/NetworkOPs.h index d2828fb919..bf9aede3b9 100644 --- a/src/NetworkOPs.h +++ b/src/NetworkOPs.h @@ -100,7 +100,11 @@ public: uint256 getCurrentLedger() { return mLedgerMaster->getCurrentLedger()->getHash(); } - // transaction operations + // + // Transaction operations + // + void submitTransaction(Transaction::pointer tpTrans); + Transaction::pointer processTransaction(Transaction::pointer transaction, uint32 targetLedger = 0, Peer* source = NULL); Transaction::pointer findTransactionByID(const uint256& transactionID); diff --git a/src/RPCServer.cpp b/src/RPCServer.cpp index 985573e281..1c410b672b 100644 --- a/src/RPCServer.cpp +++ b/src/RPCServer.cpp @@ -463,7 +463,7 @@ Json::Value RPCServer::doAccountEmailSet(const Json::Value ¶ms) uint256(), NewcoinAddress()); - (void) mNetOps->processTransaction(trans); + (void) mNetOps->submitTransaction(trans); obj["transaction"] = trans->getSTransaction()->getJson(0); obj["status"] = trans->getStatus(); @@ -572,7 +572,7 @@ Json::Value RPCServer::doAccountMessageSet(const Json::Value& params) { uint256(), naMessagePubKey); - (void) mNetOps->processTransaction(trans); + (void) mNetOps->submitTransaction(trans); obj["transaction"] = trans->getSTransaction()->getJson(0); obj["status"] = trans->getStatus(); @@ -624,7 +624,7 @@ Json::Value RPCServer::doAccountWalletSet(const Json::Value& params) { uWalletLocator, NewcoinAddress()); - (void) mNetOps->processTransaction(trans); + (void) mNetOps->submitTransaction(trans); obj["transaction"] = trans->getSTransaction()->getJson(0); obj["status"] = trans->getStatus(); @@ -822,7 +822,7 @@ Json::Value RPCServer::doNicknameSet(const Json::Value& params) saMinimumOffer, vucSignature); - (void) mNetOps->processTransaction(trans); + (void) mNetOps->submitTransaction(trans); obj["transaction"] = trans->getSTransaction()->getJson(0); obj["status"] = trans->getStatus(); @@ -897,7 +897,7 @@ Json::Value RPCServer::doOfferCreate(const Json::Value ¶ms) saTakerGets, uExpiration); - (void) mNetOps->processTransaction(trans); + (void) mNetOps->submitTransaction(trans); obj["transaction"] = trans->getSTransaction()->getJson(0); obj["status"] = trans->getStatus(); @@ -940,7 +940,7 @@ Json::Value RPCServer::doOfferCancel(const Json::Value ¶ms) 0, // YYY No source tag uSequence); - (void) mNetOps->processTransaction(trans); + (void) mNetOps->submitTransaction(trans); obj["transaction"] = trans->getSTransaction()->getJson(0); obj["status"] = trans->getStatus(); @@ -1026,7 +1026,7 @@ Json::Value RPCServer::doPasswordFund(const Json::Value ¶ms) 0, // YYY No source tag naDstAccountID); - (void) mNetOps->processTransaction(trans); + (void) mNetOps->submitTransaction(trans); obj["transaction"] = trans->getSTransaction()->getJson(0); obj["status"] = trans->getStatus(); @@ -1112,7 +1112,7 @@ Json::Value RPCServer::doPasswordSet(const Json::Value& params) naRegular0Public.getAccountPublic(), vucGeneratorSig); - (void) mNetOps->processTransaction(trns); + (void) mNetOps->submitTransaction(trns); Json::Value obj(Json::objectValue); @@ -1186,7 +1186,7 @@ Json::Value RPCServer::doRippleLineSet(const Json::Value& params) saLimitAmount, uAcceptRate); - (void) mNetOps->processTransaction(trans); + (void) mNetOps->submitTransaction(trans); obj["transaction"] = trans->getSTransaction()->getJson(0); obj["status"] = trans->getStatus(); @@ -1274,7 +1274,7 @@ Json::Value RPCServer::doRippleLinesGet(const Json::Value ¶ms) // 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. jPeer["balance"] = saBalance.getText(); - jPeer["currency"] = saBalance.getCurrencyHuman(); + jPeer["currency"] = saBalance.getHumanCurrency(); jPeer["limit"] = saLimit.getText(); jPeer["limit_peer"] = saLimitPeer.getText(); @@ -1424,7 +1424,7 @@ Json::Value RPCServer::doSend(const Json::Value& params) saDstAmount); // Initial funds in XNS. } - (void) mNetOps->processTransaction(trans); + (void) mNetOps->submitTransaction(trans); obj["transaction"] = trans->getSTransaction()->getJson(0); obj["status"] = trans->getStatus(); @@ -1434,9 +1434,9 @@ Json::Value RPCServer::doSend(const Json::Value& params) obj["srcAccountID"] = naSrcAccountID.humanAccountID(); obj["dstAccountID"] = naDstAccountID.humanAccountID(); obj["srcAmount"] = saSrcAmount.getText(); - obj["srcISO"] = saSrcAmount.getCurrencyHuman(); + obj["srcISO"] = saSrcAmount.getHumanCurrency(); obj["dstAmount"] = saDstAmount.getText(); - obj["dstISO"] = saDstAmount.getCurrencyHuman(); + obj["dstISO"] = saDstAmount.getHumanCurrency(); return obj; } @@ -1810,7 +1810,7 @@ Json::Value RPCServer::doWalletAdd(const Json::Value& params) naNewAccountPublic, vucSignature); - (void) mNetOps->processTransaction(trans); + (void) mNetOps->submitTransaction(trans); obj["transaction"] = trans->getSTransaction()->getJson(0); obj["status"] = trans->getStatus(); @@ -1885,7 +1885,7 @@ Json::Value RPCServer::doWalletClaim(const Json::Value& params) naRegular0Public.getAccountPublic(), vucGeneratorSig); - (void) mNetOps->processTransaction(trns); + (void) mNetOps->submitTransaction(trns); Json::Value obj(Json::objectValue); @@ -1963,7 +1963,7 @@ Json::Value RPCServer::doWalletCreate(const Json::Value& params) naDstAccountID, saInitialFunds); // Initial funds in XNC. - (void) mNetOps->processTransaction(trans); + (void) mNetOps->submitTransaction(trans); obj["transaction"] = trans->getSTransaction()->getJson(0); obj["status"] = trans->getStatus();