|
|
@ -3502,6 +3502,8 @@ static char *cmd_pplns(__maybe_unused PGconn *conn, char *cmd, char *id, |
|
|
|
allow_aged = true; |
|
|
|
allow_aged = true; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
LOGDEBUG("%s(): height %"PRId32, __func__, height); |
|
|
|
|
|
|
|
|
|
|
|
block_tv.tv_sec = block_tv.tv_usec = 0L; |
|
|
|
block_tv.tv_sec = block_tv.tv_usec = 0L; |
|
|
|
cd.tv_sec = cd.tv_usec = 0L; |
|
|
|
cd.tv_sec = cd.tv_usec = 0L; |
|
|
|
lookblocks.height = height + 1; |
|
|
|
lookblocks.height = height + 1; |
|
|
@ -3538,6 +3540,9 @@ static char *cmd_pplns(__maybe_unused PGconn *conn, char *cmd, char *id, |
|
|
|
blocks_confirmed(BLOCKS_NEW_STR)); |
|
|
|
blocks_confirmed(BLOCKS_NEW_STR)); |
|
|
|
return strdup(reply); |
|
|
|
return strdup(reply); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
LOGDEBUG("%s(): block %"PRId32"/%"PRId64"/%s/%s/%"PRId64, |
|
|
|
|
|
|
|
__func__, blocks->height, blocks->workinfoid, |
|
|
|
|
|
|
|
blocks->workername, blocks->confirmed, blocks->reward); |
|
|
|
switch (blocks->confirmed[0]) { |
|
|
|
switch (blocks->confirmed[0]) { |
|
|
|
case BLOCKS_NEW: |
|
|
|
case BLOCKS_NEW: |
|
|
|
block_extra = "Can't be paid out yet"; |
|
|
|
block_extra = "Can't be paid out yet"; |
|
|
@ -3571,7 +3576,9 @@ static char *cmd_pplns(__maybe_unused PGconn *conn, char *cmd, char *id, |
|
|
|
countbacklimit = true; |
|
|
|
countbacklimit = true; |
|
|
|
else |
|
|
|
else |
|
|
|
countbacklimit = false; |
|
|
|
countbacklimit = false; |
|
|
|
|
|
|
|
LOGDEBUG("%s(): ndiff %.0f limit=%s", |
|
|
|
|
|
|
|
__func__, ndiff, |
|
|
|
|
|
|
|
countbacklimit ? "true" : "false"); |
|
|
|
begin_workinfoid = end_workinfoid = 0; |
|
|
|
begin_workinfoid = end_workinfoid = 0; |
|
|
|
total_share_count = acc_share_count = 0; |
|
|
|
total_share_count = acc_share_count = 0; |
|
|
|
total_diff = 0; |
|
|
|
total_diff = 0; |
|
|
@ -3649,7 +3656,8 @@ static char *cmd_pplns(__maybe_unused PGconn *conn, char *cmd, char *id, |
|
|
|
ss_item = prev_in_ktree(ctx); |
|
|
|
ss_item = prev_in_ktree(ctx); |
|
|
|
DATA_SHARESUMMARY_NULL(sharesummary, ss_item); |
|
|
|
DATA_SHARESUMMARY_NULL(sharesummary, ss_item); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
LOGDEBUG("%s(): ss %"PRId64" total %.0f want %.0f", |
|
|
|
|
|
|
|
__func__, ss_count, total_diff, diff_want); |
|
|
|
/* If we haven't met or exceeded the required N,
|
|
|
|
/* If we haven't met or exceeded the required N,
|
|
|
|
* move on to the markersummaries */ |
|
|
|
* move on to the markersummaries */ |
|
|
|
if (total_diff < diff_want) { |
|
|
|
if (total_diff < diff_want) { |
|
|
@ -3664,6 +3672,7 @@ static char *cmd_pplns(__maybe_unused PGconn *conn, char *cmd, char *id, |
|
|
|
wm_item = find_before_in_ktree(workmarkers_workinfoid_root, &wm_look, |
|
|
|
wm_item = find_before_in_ktree(workmarkers_workinfoid_root, &wm_look, |
|
|
|
cmp_workmarkers_workinfoid, wm_ctx); |
|
|
|
cmp_workmarkers_workinfoid, wm_ctx); |
|
|
|
DATA_WORKMARKERS_NULL(workmarkers, wm_item); |
|
|
|
DATA_WORKMARKERS_NULL(workmarkers, wm_item); |
|
|
|
|
|
|
|
LOGDEBUG("%s(): workmarkers < %"PRId64, __func__, lookworkmarkers.workinfoidend); |
|
|
|
while (total_diff < diff_want && wm_item && CURRENT(&(workmarkers->expirydate))) { |
|
|
|
while (total_diff < diff_want && wm_item && CURRENT(&(workmarkers->expirydate))) { |
|
|
|
if (WMPROCESSED(workmarkers->status)) { |
|
|
|
if (WMPROCESSED(workmarkers->status)) { |
|
|
|
// Stop before FIVExWID if necessary
|
|
|
|
// Stop before FIVExWID if necessary
|
|
|
@ -3700,11 +3709,14 @@ static char *cmd_pplns(__maybe_unused PGconn *conn, char *cmd, char *id, |
|
|
|
wm_item = prev_in_ktree(wm_ctx); |
|
|
|
wm_item = prev_in_ktree(wm_ctx); |
|
|
|
DATA_WORKMARKERS_NULL(workmarkers, wm_item); |
|
|
|
DATA_WORKMARKERS_NULL(workmarkers, wm_item); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
LOGDEBUG("%s(): wm %"PRId64" ms %"PRId64" total %.0f want %.0f", |
|
|
|
|
|
|
|
__func__, wm_count, ms_count, total_diff, diff_want); |
|
|
|
} |
|
|
|
} |
|
|
|
K_RUNLOCK(markersummary_free); |
|
|
|
K_RUNLOCK(markersummary_free); |
|
|
|
K_RUNLOCK(workmarkers_free); |
|
|
|
K_RUNLOCK(workmarkers_free); |
|
|
|
K_RUNLOCK(sharesummary_free); |
|
|
|
K_RUNLOCK(sharesummary_free); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
LOGDEBUG("%s(): total %.0f want %.0f", __func__, total_diff, diff_want); |
|
|
|
if (total_diff == 0.0) { |
|
|
|
if (total_diff == 0.0) { |
|
|
|
snprintf(reply, siz, |
|
|
|
snprintf(reply, siz, |
|
|
|
"ERR.total share diff 0 before workinfo %"PRId64, |
|
|
|
"ERR.total share diff 0 before workinfo %"PRId64, |
|
|
|