Merge pull request #572
b39aae7
Tweak45800a25e9
(hyc)4a5a5ff
blockchain: always stop the ioservice before returning (moneromooo-monero)78b65cf
db_lmdb: safety close db at exit (moneromooo-monero)45800a2
db_lmdb: fix a strdup/delete[] mistmatch (moneromooo-monero)
This commit is contained in:
commit
fd36eea6dd
2 changed files with 11 additions and 3 deletions
|
@ -130,13 +130,16 @@ private:
|
||||||
template<>
|
template<>
|
||||||
struct MDB_val_copy<const char*>: public MDB_val
|
struct MDB_val_copy<const char*>: public MDB_val
|
||||||
{
|
{
|
||||||
MDB_val_copy(const char *s) :
|
MDB_val_copy(const char *s):
|
||||||
data(strdup(s))
|
size(strlen(s)+1), // include the NUL, makes it easier for compares
|
||||||
|
data(new char[size])
|
||||||
{
|
{
|
||||||
mv_size = strlen(s) + 1; // include the NUL, makes it easier for compares
|
mv_size = size;
|
||||||
mv_data = data.get();
|
mv_data = data.get();
|
||||||
|
memcpy(mv_data, s, size);
|
||||||
}
|
}
|
||||||
private:
|
private:
|
||||||
|
size_t size;
|
||||||
std::unique_ptr<char[]> data;
|
std::unique_ptr<char[]> data;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -923,6 +926,8 @@ BlockchainLMDB::~BlockchainLMDB()
|
||||||
// batch transaction shouldn't be active at this point. If it is, consider it aborted.
|
// batch transaction shouldn't be active at this point. If it is, consider it aborted.
|
||||||
if (m_batch_active)
|
if (m_batch_active)
|
||||||
batch_abort();
|
batch_abort();
|
||||||
|
if (m_open)
|
||||||
|
close();
|
||||||
}
|
}
|
||||||
|
|
||||||
BlockchainLMDB::BlockchainLMDB(bool batch_transactions)
|
BlockchainLMDB::BlockchainLMDB(bool batch_transactions)
|
||||||
|
@ -1153,6 +1158,7 @@ void BlockchainLMDB::close()
|
||||||
|
|
||||||
// FIXME: not yet thread safe!!! Use with care.
|
// FIXME: not yet thread safe!!! Use with care.
|
||||||
mdb_env_close(m_env);
|
mdb_env_close(m_env);
|
||||||
|
m_open = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void BlockchainLMDB::sync()
|
void BlockchainLMDB::sync()
|
||||||
|
|
|
@ -2109,6 +2109,7 @@ bool Blockchain::check_tx_inputs(const transaction& tx, uint64_t* pmax_used_bloc
|
||||||
if(have_tx_keyimg_as_spent(in_to_key.k_image))
|
if(have_tx_keyimg_as_spent(in_to_key.k_image))
|
||||||
{
|
{
|
||||||
LOG_PRINT_L1("Key image already spent in blockchain: " << epee::string_tools::pod_to_hex(in_to_key.k_image));
|
LOG_PRINT_L1("Key image already spent in blockchain: " << epee::string_tools::pod_to_hex(in_to_key.k_image));
|
||||||
|
KILL_IOSERVICE();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2122,6 +2123,7 @@ bool Blockchain::check_tx_inputs(const transaction& tx, uint64_t* pmax_used_bloc
|
||||||
if(!itk->second)
|
if(!itk->second)
|
||||||
{
|
{
|
||||||
LOG_PRINT_L1("Failed ring signature for tx " << get_transaction_hash(tx) << " vin key with k_image: " << in_to_key.k_image << " sig_index: " << sig_index);
|
LOG_PRINT_L1("Failed ring signature for tx " << get_transaction_hash(tx) << " vin key with k_image: " << in_to_key.k_image << " sig_index: " << sig_index);
|
||||||
|
KILL_IOSERVICE();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue