Browse Source

Don't increment the refcounter when adding transactions on the main pool to avoid getting ahead of nodes and set default refcount to 10 minutes backlog of 20 workinfos

master
Con Kolivas 9 years ago
parent
commit
b046e5c01b
  1. 9
      src/stratifier.c

9
src/stratifier.c

@ -1119,26 +1119,21 @@ static void broadcast_ping(sdata_t *sdata);
* existing transactions to determine which need to be propagated */ * existing transactions to determine which need to be propagated */
static void add_txn(sdata_t *sdata, txntable_t **txns, const char *hash, const char *data) static void add_txn(sdata_t *sdata, txntable_t **txns, const char *hash, const char *data)
{ {
bool found = false;
txntable_t *txn; txntable_t *txn;
/* Look for transactions we already know about and increment their /* Look for transactions we already know about and increment their
* refcount if we're still using them. */ * refcount if we're still using them. */
ck_rlock(&sdata->workbase_lock); ck_rlock(&sdata->workbase_lock);
HASH_FIND_STR(sdata->txns, hash, txn); HASH_FIND_STR(sdata->txns, hash, txn);
if (txn) {
txn->refcount++;
found = true;
}
ck_runlock(&sdata->workbase_lock); ck_runlock(&sdata->workbase_lock);
if (found) if (txn)
return; return;
txn = ckzalloc(sizeof(txntable_t)); txn = ckzalloc(sizeof(txntable_t));
memcpy(txn->hash, hash, 65); memcpy(txn->hash, hash, 65);
txn->data = strdup(data); txn->data = strdup(data);
txn->refcount = 10; txn->refcount = 20;
HASH_ADD_STR(*txns, hash, txn); HASH_ADD_STR(*txns, hash, txn);
} }

Loading…
Cancel
Save