From 8fab45147dcc0d2dd4a1c10877b2e6487a6b915f Mon Sep 17 00:00:00 2001 From: Con Kolivas Date: Sat, 13 Sep 2014 22:56:45 +1000 Subject: [PATCH] Maintain only one unlock position in parse_submit --- src/stratifier.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/stratifier.c b/src/stratifier.c index c3e07a68..b650d964 100644 --- a/src/stratifier.c +++ b/src/stratifier.c @@ -1913,8 +1913,7 @@ static json_t *parse_submit(stratum_instance_t *client, json_t *json_msg, json_set_string(json_msg, "reject-reason", SHARE_ERR(err)); strcpy(idstring, job_id); ASPRINTF(&fname, "%s.sharelog", current_workbase->logdir); - ck_runlock(&workbase_lock); - goto out; + goto out_unlock; } share = true; wdiff = wb->diff; @@ -1950,6 +1949,9 @@ static json_t *parse_submit(stratum_instance_t *client, json_t *json_msg, out_unlock: ck_runlock(&workbase_lock); + if (unlikely(!share)) + goto out; + if (submit) submit_share(client, id, nonce2, ntime, nonce, json_integer_value(json_object_get(json_msg, "id")));