|
|
|
@ -809,12 +809,27 @@ namespace cryptonote
|
|
|
|
|
NOTIFY_NEW_FLUFFY_BLOCK::request fluffy_response;
|
|
|
|
|
fluffy_response.b.block = t_serializable_object_to_blob(b);
|
|
|
|
|
fluffy_response.current_blockchain_height = arg.current_blockchain_height;
|
|
|
|
|
std::vector<bool> seen(b.tx_hashes.size(), false);
|
|
|
|
|
for(auto& tx_idx: arg.missing_tx_indices)
|
|
|
|
|
{
|
|
|
|
|
if(tx_idx < b.tx_hashes.size())
|
|
|
|
|
{
|
|
|
|
|
MDEBUG(" tx " << b.tx_hashes[tx_idx]);
|
|
|
|
|
if (seen[tx_idx])
|
|
|
|
|
{
|
|
|
|
|
LOG_ERROR_CCONTEXT
|
|
|
|
|
(
|
|
|
|
|
"Failed to handle request NOTIFY_REQUEST_FLUFFY_MISSING_TX"
|
|
|
|
|
<< ", request is asking for duplicate tx "
|
|
|
|
|
<< ", tx index = " << tx_idx << ", block tx count " << b.tx_hashes.size()
|
|
|
|
|
<< ", block_height = " << arg.current_blockchain_height
|
|
|
|
|
<< ", dropping connection"
|
|
|
|
|
);
|
|
|
|
|
drop_connection(context, true, false);
|
|
|
|
|
return 1;
|
|
|
|
|
}
|
|
|
|
|
txids.push_back(b.tx_hashes[tx_idx]);
|
|
|
|
|
seen[tx_idx] = true;
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|