aboutsummaryrefslogtreecommitdiff
path: root/src/core_read.cpp
diff options
context:
space:
mode:
authorGregory Sanders <gsanders87@gmail.com>2019-12-19 13:25:55 -0500
committerGregory Sanders <gsanders87@gmail.com>2019-12-30 13:24:23 -0500
commit27fc6a38f813b65e5110c77925a335214aec756a (patch)
tree62a640d28083045842ffee11000f317d3f7cdffd /src/core_read.cpp
parent6020ce3c01fe5ee15a236c47da23342005b63055 (diff)
downloadbitcoin-27fc6a38f813b65e5110c77925a335214aec756a.tar.xz
DecodeHexTx: Break out transaction decoding logic into own function
Diffstat (limited to 'src/core_read.cpp')
-rw-r--r--src/core_read.cpp22
1 files changed, 13 insertions, 9 deletions
diff --git a/src/core_read.cpp b/src/core_read.cpp
index da76983708..716a4cf988 100644
--- a/src/core_read.cpp
+++ b/src/core_read.cpp
@@ -109,16 +109,10 @@ static bool CheckTxScriptsSanity(const CMutableTransaction& tx)
return true;
}
-bool DecodeHexTx(CMutableTransaction& tx, const std::string& hex_tx, bool try_no_witness, bool try_witness)
+static bool DecodeTx(CMutableTransaction& tx, const std::vector<unsigned char>& tx_data, bool try_no_witness, bool try_witness)
{
- if (!IsHex(hex_tx)) {
- return false;
- }
-
- std::vector<unsigned char> txData(ParseHex(hex_tx));
-
if (try_witness) {
- CDataStream ssData(txData, SER_NETWORK, PROTOCOL_VERSION);
+ CDataStream ssData(tx_data, SER_NETWORK, PROTOCOL_VERSION);
try {
ssData >> tx;
// If transaction looks sane, we don't try other mode even if requested
@@ -131,7 +125,7 @@ bool DecodeHexTx(CMutableTransaction& tx, const std::string& hex_tx, bool try_no
}
if (try_no_witness) {
- CDataStream ssData(txData, SER_NETWORK, PROTOCOL_VERSION | SERIALIZE_TRANSACTION_NO_WITNESS);
+ CDataStream ssData(tx_data, SER_NETWORK, PROTOCOL_VERSION | SERIALIZE_TRANSACTION_NO_WITNESS);
try {
ssData >> tx;
if (ssData.empty()) {
@@ -145,6 +139,16 @@ bool DecodeHexTx(CMutableTransaction& tx, const std::string& hex_tx, bool try_no
return false;
}
+bool DecodeHexTx(CMutableTransaction& tx, const std::string& hex_tx, bool try_no_witness, bool try_witness)
+{
+ if (!IsHex(hex_tx)) {
+ return false;
+ }
+
+ std::vector<unsigned char> txData(ParseHex(hex_tx));
+ return DecodeTx(tx, txData, try_no_witness, try_witness);
+}
+
bool DecodeHexBlockHeader(CBlockHeader& header, const std::string& hex_header)
{
if (!IsHex(hex_header)) return false;