diff options
Diffstat (limited to 'src/blockchain_db/lmdb/db_lmdb.cpp')
-rw-r--r-- | src/blockchain_db/lmdb/db_lmdb.cpp | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/src/blockchain_db/lmdb/db_lmdb.cpp b/src/blockchain_db/lmdb/db_lmdb.cpp index d7947c8d0..6bb96d1db 100644 --- a/src/blockchain_db/lmdb/db_lmdb.cpp +++ b/src/blockchain_db/lmdb/db_lmdb.cpp @@ -1576,7 +1576,7 @@ txpool_tx_meta_t BlockchainLMDB::get_txpool_tx_meta(const crypto::hash& txid) co return meta; } -cryptonote::blobdata BlockchainLMDB::get_txpool_tx_blob(const crypto::hash& txid) const +bool BlockchainLMDB::get_txpool_tx_blob(const crypto::hash& txid, cryptonote::blobdata &bd) const { LOG_PRINT_L3("BlockchainLMDB::" << __func__); check_open(); @@ -1587,12 +1587,21 @@ cryptonote::blobdata BlockchainLMDB::get_txpool_tx_blob(const crypto::hash& txid MDB_val k = {sizeof(txid), (void *)&txid}; MDB_val v; auto result = mdb_cursor_get(m_cur_txpool_blob, &k, &v, MDB_SET); + if (result == MDB_NOTFOUND) + return false; if (result != 0) - throw1(DB_ERROR(lmdb_error("Error finding txpool tx meta: ", result).c_str())); + throw1(DB_ERROR(lmdb_error("Error finding txpool tx blob: ", result).c_str())); - blobdata bd; bd.assign(reinterpret_cast<const char*>(v.mv_data), v.mv_size); TXN_POSTFIX_RDONLY(); + return true; +} + +cryptonote::blobdata BlockchainLMDB::get_txpool_tx_blob(const crypto::hash& txid) const +{ + cryptonote::blobdata bd; + if (!get_txpool_tx_blob(txid, bd)) + throw1(DB_ERROR("Tx not found in txpool: ")); return bd; } |