From b64fcd03ea49c5fb0142e09b1147b0d30ae3d9c6 Mon Sep 17 00:00:00 2001 From: Luke Dashjr Date: Sun, 11 Oct 2026 22:09:19 +0000 Subject: [PATCH 1/2] Bugfix: submitblock: Call preciousblock on extra block submission URLs Previously, it would repeatedly call preciousblock on the local bitcoind after each extra URL submission --- src/datum_submitblock.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/datum_submitblock.c b/src/datum_submitblock.c index 2b0aa3e2..6373bc66 100644 --- a/src/datum_submitblock.c +++ b/src/datum_submitblock.c @@ -53,12 +53,17 @@ const char *submitblock_ptr = NULL; bool submitblock_ptr_owned = false; char submitblock_hash[256] = { 0 }; -void preciousblock(CURL *curl, char *blockhash) { +static +void preciousblock(CURL * const curl, const char * const url, const char * const blockhash) { json_t *json; char rpc_data[384]; snprintf(rpc_data, sizeof(rpc_data), "{\"method\":\"preciousblock\",\"params\":[\"%s\"],\"id\":1}", blockhash); - json = bitcoind_json_rpc_call(curl, &datum_config, rpc_data); + if (url) { + json = json_rpc_call(curl, url, NULL, rpc_data); + } else { + json = bitcoind_json_rpc_call(curl, &datum_config, rpc_data); + } if (!json) return; json_decref(json); @@ -102,7 +107,7 @@ bool datum_submitblock_log_reply(const json_t *reply, const char *block_hash_hex } } -void datum_submitblock_doit(CURL *tcurl, char *url, const char *submitblock_req, const char *block_hash_hex) { +void datum_submitblock_doit(CURL * const tcurl, const char * const url, const char * const submitblock_req, const char * const block_hash_hex) { json_t *r; // TODO: Move these types of things to the conf file if (!url) { @@ -114,7 +119,7 @@ void datum_submitblock_doit(CURL *tcurl, char *url, const char *submitblock_req, if (r) json_decref(r); // precious block! - preciousblock(tcurl, submitblock_hash); + preciousblock(tcurl, url, block_hash_hex); } void *datum_submitblock_thread(void *ptr) { @@ -146,7 +151,7 @@ void *datum_submitblock_thread(void *ptr) { if (datum_config.extra_block_submissions_count > 0) { for(i=0;i Date: Mon, 19 Oct 2026 22:34:17 +0000 Subject: [PATCH 2/2] submitblock: Prioritize submission over preciousblock for extra submission URLs In case RPC calls are hanging, perform all submits before preciousblock calls. Except for our primary node - since we use that as a source. --- src/datum_submitblock.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/datum_submitblock.c b/src/datum_submitblock.c index 6373bc66..60e44ea4 100644 --- a/src/datum_submitblock.c +++ b/src/datum_submitblock.c @@ -107,7 +107,7 @@ bool datum_submitblock_log_reply(const json_t *reply, const char *block_hash_hex } } -void datum_submitblock_doit(CURL * const tcurl, const char * const url, const char * const submitblock_req, const char * const block_hash_hex) { +void datum_submitblock_doit_and_log(CURL * const tcurl, const char * const url, const char * const submitblock_req, const char * const block_hash_hex) { json_t *r; // TODO: Move these types of things to the conf file if (!url) { @@ -117,9 +117,6 @@ void datum_submitblock_doit(CURL * const tcurl, const char * const url, const ch } datum_submitblock_log_reply(r, block_hash_hex); if (r) json_decref(r); - - // precious block! - preciousblock(tcurl, url, block_hash_hex); } void *datum_submitblock_thread(void *ptr) { @@ -146,12 +143,16 @@ void *datum_submitblock_thread(void *ptr) { if (submitblock_ptr != NULL) { DLOG_DEBUG("SUBMITTING BLOCK TO OUR NODE!"); - datum_submitblock_doit(tcurl,NULL,submitblock_ptr,submitblock_hash); + datum_submitblock_doit_and_log(tcurl, NULL, submitblock_ptr, submitblock_hash); + preciousblock(tcurl, NULL, submitblock_hash); if (datum_config.extra_block_submissions_count > 0) { for(i=0;i