Skip to content

Commit

Permalink
plugin: Pass the full raw_payload including realm to htlc_accepted
Browse files Browse the repository at this point in the history
So far we've only handled legacy payloads, which meant we could drop the realm
byte since it was always 0x00. Once we start handling TLV payloads the first
byte, i.e., the former realm byte, is important since it gives us the length
of the payload. This is a breaking change, however I don't think there's
anyone using the `raw_payload` as of yet.

Changelog-Changed: JSON-RPC: the `raw_payload` now includes the first byte, i.e., the realm byte, of the payload as well. This allows correct decoding of a TLV payload in the plugins.
  • Loading branch information
cdecker committed Nov 14, 2019
1 parent 0d55dca commit e2adf44
Showing 1 changed file with 1 addition and 4 deletions.
5 changes: 1 addition & 4 deletions common/sphinx.c
Original file line number Diff line number Diff line change
Expand Up @@ -580,7 +580,7 @@ static void sphinx_parse_payload(struct route_step *step, const u8 *src)
}

/* Copy common pieces over */
step->raw_payload = tal_dup_arr(step, u8, src + vsize, raw_size, 0);
step->raw_payload = tal_dup_arr(step, u8, src, raw_size + vsize, 0);
memcpy(step->next->mac, src + hop_size - HMAC_SIZE, HMAC_SIZE);

/* And now try to parse whatever the payload contains so we can use it
Expand Down Expand Up @@ -738,9 +738,6 @@ struct route_step *process_onionpacket(
return tal_free(step);
}

step->raw_payload = tal_dup_arr(step, u8, paddedheader + 1,
shift_size - 1 - HMAC_SIZE, 0);

/* Copy the hmac from the last HMAC_SIZE bytes */
memcpy(&step->next->mac, paddedheader + shift_size - HMAC_SIZE, HMAC_SIZE);

Expand Down

0 comments on commit e2adf44

Please sign in to comment.