@ -382,7 +382,9 @@ bool ringdb::blackball_worker(const crypto::public_key &output, int op)
booltx_active=false;
boolret=true;
dbr=resize_env(env,filename.c_str(),32*2);// a pubkey, and some slack
THROW_WALLET_EXCEPTION_IF(outputs.size()>1&&op==BLACKBALL_QUERY,tools::error::wallet_internal_error,"Blackball query only makes sense for a single output");
dbr=resize_env(env,filename.c_str(),32*2*outputs.size());// a pubkey, and some slack
THROW_WALLET_EXCEPTION_IF(dbr,tools::error::wallet_internal_error,"Failed to set env map size: "+std::string(mdb_strerror(dbr)));
dbr=mdb_txn_begin(env,NULL,0,&txn);
THROW_WALLET_EXCEPTION_IF(dbr,tools::error::wallet_internal_error,"Failed to create LMDB transaction: "+std::string(mdb_strerror(dbr)));
@ -391,6 +393,9 @@ bool ringdb::blackball_worker(const crypto::public_key &output, int op)
MDB_valkey=zerokeyval;
MDB_valdata;
for(constcrypto::public_key&output:outputs)
{
data.mv_data=(void*)&output;
data.mv_size=sizeof(output);
@ -419,12 +424,18 @@ bool ringdb::blackball_worker(const crypto::public_key &output, int op)
THROW_WALLET_EXCEPTION_IF(dbr,tools::error::wallet_internal_error,"Failed to query blackballs table: "+std::string(mdb_strerror(dbr)));
}
if(op==BLACKBALL_CLEAR)
{
dbr=mdb_drop(txn,dbi_blackballs,0);
THROW_WALLET_EXCEPTION_IF(dbr,tools::error::wallet_internal_error,"Failed to clear blackballs table: "+std::string(mdb_strerror(dbr)));
}
dbr=mdb_txn_commit(txn);
THROW_WALLET_EXCEPTION_IF(dbr,tools::error::wallet_internal_error,"Failed to commit txn blackballing output to database: "+std::string(mdb_strerror(dbr)));
@ -432,24 +443,32 @@ bool ringdb::blackball_worker(const crypto::public_key &output, int op)