Browse Source

Differentiate generated authed users from unauthorised and don't do any stats on unauthed users

master
Con Kolivas 10 years ago
parent
commit
9edf91d17e
  1. 19
      src/stratifier.c

19
src/stratifier.c

@ -183,6 +183,8 @@ struct user_instance {
double dsps1440; double dsps1440;
double dsps10080; double dsps10080;
tv_t last_share; tv_t last_share;
bool authorised; /* Has this username ever been authorised? */
time_t auth_time; time_t auth_time;
}; };
@ -2116,8 +2118,6 @@ static json_t *parse_authorise(stratum_instance_t *client, json_t *params_val, j
client->start_time = now.tv_sec; client->start_time = now.tv_sec;
strcpy(client->address, address); strcpy(client->address, address);
LOGNOTICE("Authorised client %ld worker %s as user %s", client->id, buf,
user_instance->username);
client->workername = strdup(buf); client->workername = strdup(buf);
if (CKP_STANDALONE(ckp)) if (CKP_STANDALONE(ckp))
ret = true; ret = true;
@ -2139,9 +2139,16 @@ static json_t *parse_authorise(stratum_instance_t *client, json_t *params_val, j
ret = true; ret = true;
} }
} }
if (ret) {
client->authorised = ret; client->authorised = ret;
if (client->authorised) user_instance->authorised = ret;
inc_worker(ckp, user_instance); inc_worker(ckp, user_instance);
LOGNOTICE("Authorised client %ld worker %s as user %s", client->id, buf,
user_instance->username);
} else {
LOGNOTICE("Client %ld worker %s failed to authorise as user %s", client->id, buf,
user_instance->username);
}
out: out:
return json_boolean(ret); return json_boolean(ret);
} }
@ -3439,6 +3446,9 @@ static void update_workerstats(ckpool_t *ckp, sdata_t *sdata)
worker_instance_t *worker; worker_instance_t *worker;
uint8_t cycle_mask; uint8_t cycle_mask;
if (!user->authorised)
continue;
/* Select users using a mask to return each user's stats once /* Select users using a mask to return each user's stats once
* every ~10 minutes */ * every ~10 minutes */
cycle_mask = user->id & 0x1f; cycle_mask = user->id & 0x1f;
@ -3540,6 +3550,9 @@ static void *statsupdate(void *arg)
int iterations = 0; int iterations = 0;
bool idle = false; bool idle = false;
if (!instance->authorised)
continue;
/* Decay times per worker */ /* Decay times per worker */
DL_FOREACH(instance->worker_instances, worker) { DL_FOREACH(instance->worker_instances, worker) {
/* Sanity check, should never happen */ /* Sanity check, should never happen */

Loading…
Cancel
Save