Browse Source

Do not return dropped clients in ref_instance_by_id

master
ckolivas 10 years ago
parent
commit
ab93d55bad
  1. 10
      src/stratifier.c

10
src/stratifier.c

@ -1151,15 +1151,19 @@ static void __inc_instance_ref(stratum_instance_t *client)
/* Find an __instance_by_id and increase its reference count allowing us to
* use this instance outside of instance_lock without fear of it being
* dereferenced. */
* dereferenced. Does not return dropped clients still on the list. */
static stratum_instance_t *ref_instance_by_id(sdata_t *sdata, int64_t id)
{
stratum_instance_t *client;
ck_wlock(&sdata->instance_lock);
client = __instance_by_id(sdata, id);
if (client)
__inc_instance_ref(client);
if (client) {
if (unlikely(client->dropped))
client = NULL;
else
__inc_instance_ref(client);
}
ck_wunlock(&sdata->instance_lock);
return client;

Loading…
Cancel
Save