mirror of
https://github.com/aljazceru/lightning.git
synced 2025-12-19 23:24:27 +01:00
plugins: simplify htlc_accepted hook payload-setting API.
As discussed with Christian, prepending the length to the payload returned is awkward, but it's the only way to set a legacy payload. As this will be soon deprecated, simplify the external API. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
This commit is contained in:
@@ -804,8 +804,10 @@ if we're the recipient, or attempt to forward it otherwise. Notice that the
|
|||||||
usual checks such as sufficient fees and CLTV deltas are still enforced.
|
usual checks such as sufficient fees and CLTV deltas are still enforced.
|
||||||
|
|
||||||
It can also replace the `onion.payload` by specifying a `payload` in
|
It can also replace the `onion.payload` by specifying a `payload` in
|
||||||
the response. This will be re-parsed; it's useful for removing onion
|
the response. Note that this is always a TLV-style payload, so unlike
|
||||||
fields which a plugin doesn't want lightningd to consider.
|
`onion.payload` there is no length prefix (and it must be at least 4
|
||||||
|
hex digits long). This will be re-parsed; it's useful for removing
|
||||||
|
onion fields which a plugin doesn't want lightningd to consider.
|
||||||
|
|
||||||
|
|
||||||
```json
|
```json
|
||||||
|
|||||||
@@ -18,17 +18,13 @@ static struct command_result *
|
|||||||
htlc_accepted_continue(struct command *cmd, struct tlv_tlv_payload *payload)
|
htlc_accepted_continue(struct command *cmd, struct tlv_tlv_payload *payload)
|
||||||
{
|
{
|
||||||
struct json_stream *response;
|
struct json_stream *response;
|
||||||
u8 *binpayload, *rawpayload;
|
|
||||||
response = jsonrpc_stream_success(cmd);
|
response = jsonrpc_stream_success(cmd);
|
||||||
|
|
||||||
json_add_string(response, "result", "continue");
|
json_add_string(response, "result", "continue");
|
||||||
if (payload) {
|
if (payload) {
|
||||||
binpayload = tal_arr(cmd, u8, 0);
|
u8 *binpayload = tal_arr(cmd, u8, 0);
|
||||||
towire_tlvstream_raw(&binpayload, payload->fields);
|
towire_tlvstream_raw(&binpayload, payload->fields);
|
||||||
rawpayload = tal_arr(cmd, u8, 0);
|
json_add_string(response, "payload", tal_hex(cmd, binpayload));
|
||||||
towire_bigsize(&rawpayload, tal_bytelen(binpayload));
|
|
||||||
towire(&rawpayload, binpayload, tal_bytelen(binpayload));
|
|
||||||
json_add_string(response, "payload", tal_hex(cmd, rawpayload));
|
|
||||||
}
|
}
|
||||||
return command_finished(cmd, response);
|
return command_finished(cmd, response);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,11 +13,16 @@ plugin = Plugin()
|
|||||||
def on_htlc_accepted(htlc, onion, plugin, **kwargs):
|
def on_htlc_accepted(htlc, onion, plugin, **kwargs):
|
||||||
# eg. '2902017b04016d0821fff5b6bd5018c8731aa0496c3698ef49f132ef9a3000c94436f4957e79a2f8827b'
|
# eg. '2902017b04016d0821fff5b6bd5018c8731aa0496c3698ef49f132ef9a3000c94436f4957e79a2f8827b'
|
||||||
# (but values change depending on pay's randomness!)
|
# (but values change depending on pay's randomness!)
|
||||||
|
print("payload was:{}".format(onion['payload']))
|
||||||
|
assert onion['payload'][0:2] == '29'
|
||||||
|
|
||||||
if plugin.replace_payload == 'corrupt_secret':
|
if plugin.replace_payload == 'corrupt_secret':
|
||||||
|
# Note: we don't include length prefix in returned payload, since it doesn't
|
||||||
|
# support the pre-TLV legacy form.
|
||||||
if onion['payload'][18] == '0':
|
if onion['payload'][18] == '0':
|
||||||
newpayload = onion['payload'][:18] + '1' + onion['payload'][19:]
|
newpayload = onion['payload'][2:18] + '1' + onion['payload'][19:]
|
||||||
else:
|
else:
|
||||||
newpayload = onion['payload'][:18] + '0' + onion['payload'][19:]
|
newpayload = onion['payload'][2:18] + '0' + onion['payload'][19:]
|
||||||
else:
|
else:
|
||||||
newpayload = plugin.replace_payload
|
newpayload = plugin.replace_payload
|
||||||
print("payload was:{}".format(onion['payload']))
|
print("payload was:{}".format(onion['payload']))
|
||||||
|
|||||||
Reference in New Issue
Block a user