common: assume htlc_maximum_msat, don't check bit any more.

Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
This commit is contained in:
Rusty Russell 2022-09-14 13:20:31 +09:30
parent 253b25522b
commit bb49e1bea5
5 changed files with 10 additions and 32 deletions

View File

@ -1228,7 +1228,6 @@ void gossmap_chan_get_update_details(const struct gossmap *map,
u32 *fee_base_msat, u32 *fee_base_msat,
u32 *fee_proportional_millionths, u32 *fee_proportional_millionths,
struct amount_msat *htlc_minimum_msat, struct amount_msat *htlc_minimum_msat,
/* iff message_flags & 1 */
struct amount_msat *htlc_maximum_msat) struct amount_msat *htlc_maximum_msat)
{ {
/* Note that first two bytes are message type */ /* Note that first two bytes are message type */
@ -1241,18 +1240,15 @@ void gossmap_chan_get_update_details(const struct gossmap *map,
const size_t fee_base_off = htlc_minimum_off + 8; const size_t fee_base_off = htlc_minimum_off + 8;
const size_t fee_prop_off = fee_base_off + 4; const size_t fee_prop_off = fee_base_off + 4;
const size_t htlc_maximum_off = fee_prop_off + 4; const size_t htlc_maximum_off = fee_prop_off + 4;
u8 mflags;
assert(gossmap_chan_set(chan, dir)); assert(gossmap_chan_set(chan, dir));
if (timestamp) if (timestamp)
*timestamp = map_be32(map, timestamp_off); *timestamp = map_be32(map, timestamp_off);
/* We need this (below), even if they don't want it */
mflags = map_u8(map, message_flags_off);
if (message_flags)
*message_flags = mflags;
if (channel_flags) if (channel_flags)
*channel_flags = map_u8(map, channel_flags_off); *channel_flags = map_u8(map, channel_flags_off);
if (message_flags)
*message_flags = map_u8(map, message_flags_off);
if (fee_base_msat) if (fee_base_msat)
*fee_base_msat = map_be32(map, fee_base_off); *fee_base_msat = map_be32(map, fee_base_off);
if (fee_proportional_millionths) if (fee_proportional_millionths)
@ -1260,7 +1256,7 @@ void gossmap_chan_get_update_details(const struct gossmap *map,
if (htlc_minimum_msat) if (htlc_minimum_msat)
*htlc_minimum_msat *htlc_minimum_msat
= amount_msat(map_be64(map, htlc_minimum_off)); = amount_msat(map_be64(map, htlc_minimum_off));
if (htlc_maximum_msat && (mflags & 1)) if (htlc_maximum_msat)
*htlc_maximum_msat *htlc_maximum_msat
= amount_msat(map_be64(map, htlc_maximum_off)); = amount_msat(map_be64(map, htlc_maximum_off));
} }

View File

@ -161,7 +161,6 @@ void gossmap_chan_get_update_details(const struct gossmap *map,
u32 *fee_base_msat, u32 *fee_base_msat,
u32 *fee_proportional_millionths, u32 *fee_proportional_millionths,
struct amount_msat *htlc_minimum_msat, struct amount_msat *htlc_minimum_msat,
/* iff message_flags & 1 */
struct amount_msat *htlc_maximum_msat); struct amount_msat *htlc_maximum_msat);
/* Given a struct node, get the nth channel, and tell us if we're half[0/1]. /* Given a struct node, get the nth channel, and tell us if we're half[0/1].

View File

@ -251,11 +251,7 @@ class ChannelUpdate(object):
(cu.htlc_minimum_msat,) = struct.unpack("!Q", b.read(8)) (cu.htlc_minimum_msat,) = struct.unpack("!Q", b.read(8))
(cu.fee_base_msat,) = struct.unpack("!I", b.read(4)) (cu.fee_base_msat,) = struct.unpack("!I", b.read(4))
(cu.fee_proportional_millionths,) = struct.unpack("!I", b.read(4)) (cu.fee_proportional_millionths,) = struct.unpack("!I", b.read(4))
t = b.read(8) (cu.htlc_maximum_msat,) = struct.unpack("!Q", b.read(8))
if len(t) == 8:
(cu.htlc_maximum_msat,) = struct.unpack("!Q", t)
else:
cu.htlc_maximum_msat = None
return cu return cu

View File

@ -1322,21 +1322,10 @@ bool routing_add_channel_update(struct routing_state *rstate,
sat = uc->sat; sat = uc->sat;
} }
if (message_flags & ROUTING_OPT_HTLC_MAX_MSAT) { /* Reject update if the `htlc_maximum_msat` is greater
/* Reject update if the `htlc_maximum_msat` is greater * than the total available channel satoshis */
* than the total available channel satoshis */ if (amount_msat_greater_sat(htlc_maximum, sat))
if (amount_msat_greater_sat(htlc_maximum, sat)) return false;
return false;
} else {
/* If not indicated, set htlc_max_msat to channel capacity */
if (!amount_sat_to_msat(&htlc_maximum, sat)) {
status_peer_broken(peer ? &peer->id : NULL,
"Channel capacity %s overflows!",
type_to_string(tmpctx, struct amount_sat,
&sat));
return false;
}
}
/* Check timestamp is sane (unless from store). */ /* Check timestamp is sane (unless from store). */
if (!index && !timestamp_reasonable(rstate, timestamp)) { if (!index && !timestamp_reasonable(rstate, timestamp)) {

View File

@ -280,10 +280,8 @@ static void json_add_halfchan(struct json_stream *response,
json_add_num(response, "delay", c->half[dir].delay); json_add_num(response, "delay", c->half[dir].delay);
json_add_amount_msat_only(response, "htlc_minimum_msat", json_add_amount_msat_only(response, "htlc_minimum_msat",
htlc_minimum_msat); htlc_minimum_msat);
json_add_amount_msat_only(response, "htlc_maximum_msat",
if (message_flags & 1) htlc_maximum_msat);
json_add_amount_msat_only(response, "htlc_maximum_msat",
htlc_maximum_msat);
json_add_hex_talarr(response, "features", chanfeatures); json_add_hex_talarr(response, "features", chanfeatures);
json_object_end(response); json_object_end(response);
} }