@ -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 = 1 0;
txn - > refcount = 2 0;
HASH_ADD_STR ( * txns , hash , txn ) ;
HASH_ADD_STR ( * txns , hash , txn ) ;
}
}