Skip to content

Commit

Permalink
bitcoind: remove v0.9.0-compat for rejecting sendrawtransaction arg.
Browse files Browse the repository at this point in the history
Changelog-Removed: `bcli` replacements must allow `allowhighfees` argument (deprecated 0.9.1).
Signed-off-by: Rusty Russell <[email protected]>
  • Loading branch information
rustyrussell committed Jan 28, 2021
1 parent f94db6c commit 926f6d4
Showing 1 changed file with 1 addition and 63 deletions.
64 changes: 1 addition & 63 deletions lightningd/bitcoind.c
Original file line number Diff line number Diff line change
Expand Up @@ -253,7 +253,6 @@ void bitcoind_estimate_fees_(struct bitcoind *bitcoind,

struct sendrawtx_call {
struct bitcoind *bitcoind;
const char *hextx;
void (*cb)(struct bitcoind *bitcoind,
bool success,
const char *err_msg,
Expand Down Expand Up @@ -292,59 +291,6 @@ static void sendrawtx_callback(const char *buf, const jsmntok_t *toks,
tal_free(call);
}

/* For compatibility with `sendrawtransaction` plugins written for
* 0.9.0 or earlier.
* Once this deprecated API is removed, we can just delete this function
* and use sendrawtx_callback directly in bitcoind_sendrawtx_ahf_.
*/
static void sendrawtx_compatv090_callback(const char *buf,
const jsmntok_t *toks,
const jsmntok_t *idtok,
struct sendrawtx_call *call)
{
struct jsonrpc_request *req;

static bool warned = false;


/* If deprecated APIs not enabled, fail it outright. */
if (!deprecated_apis)
goto fallback;

/* If we got a JSONRPC2_INVALID_PARAMS error, assume it is
* because it is an old plugin which does not support the
* new `allowhighfees` parameter.
*/
if (json_scan(tmpctx, buf, toks, "{error:{code:"
stringify(JSONRPC2_INVALID_PARAMS)"}}") != NULL) {
goto fallback;
}

/* Possibly it is because `allowhighfees` is not understood
* by the plugin. */
if (!warned) {
warned = true;
log_unusual(call->bitcoind->log,
"`sendrawtransaction` failed when given two "
"arguments, will retry with single-argument "
"deprecated API.");
}

/* Retry with a single argument, hextx. */
req = jsonrpc_request_start(call->bitcoind, "sendrawtransaction",
call->bitcoind->log,
NULL, sendrawtx_callback, call);
json_add_string(req->stream, "tx", call->hextx);
jsonrpc_request_end(req);
bitcoin_plugin_send(call->bitcoind, req);

return;

fallback:
sendrawtx_callback(buf, toks, idtok, call);
return;
}

void bitcoind_sendrawtx_ahf_(struct bitcoind *bitcoind,
const char *hextx,
bool allowhighfees,
Expand All @@ -356,21 +302,13 @@ void bitcoind_sendrawtx_ahf_(struct bitcoind *bitcoind,
struct sendrawtx_call *call = tal(bitcoind, struct sendrawtx_call);

call->bitcoind = bitcoind;
/* For compatibility with 0.9.0 or earlier.
* Once removed, we can remove the hextx field in
* struct sendrawtx_call as well.
*/
if (deprecated_apis)
call->hextx = tal_strdup(call, hextx);
else
call->hextx = NULL;
call->cb = cb;
call->cb_arg = cb_arg;
log_debug(bitcoind->log, "sendrawtransaction: %s", hextx);

req = jsonrpc_request_start(bitcoind, "sendrawtransaction",
bitcoind->log,
NULL, sendrawtx_compatv090_callback,
NULL, sendrawtx_callback,
call);
json_add_string(req->stream, "tx", hextx);
json_add_bool(req->stream, "allowhighfees", allowhighfees);
Expand Down

0 comments on commit 926f6d4

Please sign in to comment.