mirror of
https://github.com/ElementsProject/lightning.git
synced 2025-01-18 05:12:45 +01:00
channel: tell master about the HTLC fulfillment.
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
This commit is contained in:
parent
826fb0c2dc
commit
1c0b43f04d
@ -700,7 +700,8 @@ static void handle_peer_fulfill_htlc(struct peer *peer, const u8 *msg)
|
|||||||
e = channel_fulfill_htlc(peer->channel, LOCAL, id, &preimage);
|
e = channel_fulfill_htlc(peer->channel, LOCAL, id, &preimage);
|
||||||
switch (e) {
|
switch (e) {
|
||||||
case CHANNEL_ERR_REMOVE_OK:
|
case CHANNEL_ERR_REMOVE_OK:
|
||||||
/* FIXME: tell master about HTLC preimage */
|
msg = towire_channel_fulfilled_htlc(msg, id, &preimage);
|
||||||
|
daemon_conn_send(&peer->master, take(msg));
|
||||||
start_commit_timer(peer);
|
start_commit_timer(peer);
|
||||||
return;
|
return;
|
||||||
/* These shouldn't happen, because any offered HTLC (which would give
|
/* These shouldn't happen, because any offered HTLC (which would give
|
||||||
|
@ -742,6 +742,37 @@ static int peer_accepted_htlc(struct peer *peer, const u8 *msg)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int peer_fulfilled_htlc(struct peer *peer, const u8 *msg)
|
||||||
|
{
|
||||||
|
u64 id;
|
||||||
|
struct preimage preimage;
|
||||||
|
struct htlc_end *hend;
|
||||||
|
|
||||||
|
if (!fromwire_channel_fulfilled_htlc(msg, NULL, &id, &preimage)) {
|
||||||
|
log_broken(peer->log, "bad fromwire_channel_fulfilled_htlc %s",
|
||||||
|
tal_hex(peer, msg));
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
hend = find_htlc_end(&peer->ld->htlc_ends, peer, id, HTLC_DST);
|
||||||
|
if (!hend) {
|
||||||
|
log_broken(peer->log,
|
||||||
|
"channel_fulfilled_htlc unknown htlc %"PRIu64,
|
||||||
|
id);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* They fulfilled our HTLC. Credit them, forward as required. */
|
||||||
|
peer->balance[REMOTE] += hend->msatoshis;
|
||||||
|
peer->balance[LOCAL] -= hend->msatoshis;
|
||||||
|
|
||||||
|
/* FIXME: Forward! */
|
||||||
|
assert(!hend->other_end);
|
||||||
|
tal_free(hend);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static int channel_msg(struct subd *sd, const u8 *msg, const int *unused)
|
static int channel_msg(struct subd *sd, const u8 *msg, const int *unused)
|
||||||
{
|
{
|
||||||
enum channel_wire_type t = fromwire_peektype(msg);
|
enum channel_wire_type t = fromwire_peektype(msg);
|
||||||
@ -756,6 +787,7 @@ static int channel_msg(struct subd *sd, const u8 *msg, const int *unused)
|
|||||||
case WIRE_CHANNEL_ACCEPTED_HTLC:
|
case WIRE_CHANNEL_ACCEPTED_HTLC:
|
||||||
return peer_accepted_htlc(sd->peer, msg);
|
return peer_accepted_htlc(sd->peer, msg);
|
||||||
case WIRE_CHANNEL_FULFILLED_HTLC:
|
case WIRE_CHANNEL_FULFILLED_HTLC:
|
||||||
|
return peer_fulfilled_htlc(sd->peer, msg);
|
||||||
case WIRE_CHANNEL_FAILED_HTLC:
|
case WIRE_CHANNEL_FAILED_HTLC:
|
||||||
case WIRE_CHANNEL_MALFORMED_HTLC:
|
case WIRE_CHANNEL_MALFORMED_HTLC:
|
||||||
/* FIXME: Forward. */
|
/* FIXME: Forward. */
|
||||||
|
@ -74,11 +74,11 @@ check "lcli1 getlog debug | $FGREP 'Sending commit_sig with 1 htlc sigs'"
|
|||||||
check "lcli2 getlog debug | $FGREP 'Resolving invoice '\'testpayment1\'' with HTLC 1'"
|
check "lcli2 getlog debug | $FGREP 'Resolving invoice '\'testpayment1\'' with HTLC 1'"
|
||||||
[ `lcli2 listinvoice testpayment1 | get_field complete` = true ]
|
[ `lcli2 listinvoice testpayment1 | get_field complete` = true ]
|
||||||
|
|
||||||
#check "lcli1 getpeers | get_field msatoshi_to_us | $FGREP -w 900000000"
|
check "lcli1 getpeers | get_field msatoshi_to_us | $FGREP -w 900000000"
|
||||||
#[ `lcli1 getpeers | get_field msatoshi_to_us` = 900000000 ]
|
[ `lcli1 getpeers | get_field msatoshi_to_us` = 900000000 ]
|
||||||
#[ `lcli1 getpeers | get_field msatoshi_to_them` = 100000000 ]
|
[ `lcli1 getpeers | get_field msatoshi_to_them` = 100000000 ]
|
||||||
#[ `lcli2 getpeers | get_field msatoshi_to_them` = 900000000 ]
|
[ `lcli2 getpeers | get_field msatoshi_to_them` = 900000000 ]
|
||||||
#[ `lcli2 getpeers | get_field msatoshi_to_us` = 100000000 ]
|
[ `lcli2 getpeers | get_field msatoshi_to_us` = 100000000 ]
|
||||||
|
|
||||||
lcli1 stop
|
lcli1 stop
|
||||||
lcli2 stop
|
lcli2 stop
|
||||||
|
Loading…
Reference in New Issue
Block a user