From 006300ab96f81e9fd38d384d8c946cca6248c134 Mon Sep 17 00:00:00 2001 From: Rusty Russell Date: Thu, 25 Mar 2021 14:43:12 +1030 Subject: [PATCH] lightningd: set "direction" correctly for connect which is already connected. This means remembering the connection direction. We also use the address to try to reconnect, which we shouldn't bother with if they connect to us. For peers from the database, we currently always save the addr: we shouldn't really do this if they connected to us, since it's not useful for reconnecting (we don't show the addr in JSON reply to listpeers unless we're connected, so it's only an internal issue). This is left for future work. Signed-off-by: Rusty Russell --- lightningd/channel.c | 5 +- lightningd/connect_control.c | 5 +- lightningd/peer_control.c | 22 +++- lightningd/peer_control.h | 4 +- wallet/db_postgres_sqlgen.c | 2 +- wallet/db_sqlite3_sqlgen.c | 2 +- wallet/statements_gettextgen.po | 206 ++++++++++++++++---------------- wallet/test/run-wallet.c | 4 +- wallet/wallet.c | 3 +- 9 files changed, 136 insertions(+), 117 deletions(-) diff --git a/lightningd/channel.c b/lightningd/channel.c index 690bcd49d..094a66eb3 100644 --- a/lightningd/channel.c +++ b/lightningd/channel.c @@ -842,8 +842,11 @@ static void err_and_reconnect(struct channel *channel, channel_set_owner(channel, NULL); + /* Their address only useful if we connected to them */ delay_then_reconnect(channel, seconds_before_reconnect, - &channel->peer->addr); + channel->peer->connected_incoming + ? NULL + : &channel->peer->addr); } void channel_fail_reconnect_later(struct channel *channel, const char *fmt, ...) diff --git a/lightningd/connect_control.c b/lightningd/connect_control.c index 1a4351f87..a3698cc6a 100644 --- a/lightningd/connect_control.c +++ b/lightningd/connect_control.c @@ -149,8 +149,9 @@ static struct command_result *json_connect(struct command *cmd, || (channel && channel->connected)) { log_debug(cmd->ld->log, "Already connected via %s", type_to_string(tmpctx, struct wireaddr_internal, &peer->addr)); - /* FIXME: Save connection direction! */ - return connect_cmd_succeed(cmd, peer, false, &peer->addr); + return connect_cmd_succeed(cmd, peer, + peer->connected_incoming, + &peer->addr); } } diff --git a/lightningd/peer_control.c b/lightningd/peer_control.c index 1e8ed7c7b..d07691c98 100644 --- a/lightningd/peer_control.c +++ b/lightningd/peer_control.c @@ -87,7 +87,8 @@ static void peer_update_features(struct peer *peer, struct peer *new_peer(struct lightningd *ld, u64 dbid, const struct node_id *id, - const struct wireaddr_internal *addr) + const struct wireaddr_internal *addr, + bool connected_incoming) { /* We are owned by our channels, and freed manually by destroy_channel */ struct peer *peer = tal(NULL, struct peer); @@ -97,6 +98,7 @@ struct peer *new_peer(struct lightningd *ld, u64 dbid, peer->id = *id; peer->uncommitted_channel = NULL; peer->addr = *addr; + peer->connected_incoming = connected_incoming; peer->their_features = NULL; list_head_init(&peer->channels); peer->direction = node_id_idx(&peer->ld->id, &peer->id); @@ -1062,6 +1064,7 @@ static void peer_connected_hook_final(struct peer_connected_hook_payload *payloa case DUALOPEND_AWAITING_LOCKIN: assert(!channel->owner); channel->peer->addr = addr; + channel->peer->connected_incoming = payload->incoming; peer_restart_dualopend(peer, payload->pps, channel, NULL); return; case CHANNELD_AWAITING_LOCKIN: @@ -1069,12 +1072,14 @@ static void peer_connected_hook_final(struct peer_connected_hook_payload *payloa case CHANNELD_SHUTTING_DOWN: assert(!channel->owner); channel->peer->addr = addr; + channel->peer->connected_incoming = payload->incoming; peer_start_channeld(channel, payload->pps, NULL, true); return; case CLOSINGD_SIGEXCHANGE: assert(!channel->owner); channel->peer->addr = addr; + channel->peer->connected_incoming = payload->incoming; peer_start_closingd(channel, payload->pps, true, NULL); return; } @@ -1097,6 +1102,7 @@ send_error: assert(channel->state == DUALOPEND_OPEN_INIT || channel->state == DUALOPEND_AWAITING_LOCKIN); channel->peer->addr = addr; + channel->peer->connected_incoming = payload->incoming; peer_restart_dualopend(peer, payload->pps, channel, error); } else peer_start_dualopend(peer, payload->pps, error); @@ -1183,7 +1189,8 @@ void peer_connected(struct lightningd *ld, const u8 *msg, * subdaemon. Otherwise, we'll hand to openingd to wait there. */ peer = peer_by_id(ld, &id); if (!peer) - peer = new_peer(ld, 0, &id, &hook_payload->addr); + peer = new_peer(ld, 0, &id, &hook_payload->addr, + hook_payload->incoming); tal_steal(peer, hook_payload); hook_payload->peer = peer; @@ -1748,11 +1755,16 @@ static void activate_peer(struct peer *peer, u32 delay) "Will attempt reconnect " "in %u seconds", delay)); - delay_then_reconnect(channel, delay, &peer->addr); + delay_then_reconnect(channel, delay, + peer->connected_incoming + ? NULL + : &peer->addr); } else { msg = towire_connectd_connect_to_peer(NULL, - &peer->id, 0, - &peer->addr); + &peer->id, 0, + peer->connected_incoming + ? NULL + : &peer->addr); subd_send_msg(ld->connectd, take(msg)); channel_set_billboard(channel, false, "Attempting to reconnect"); diff --git a/lightningd/peer_control.h b/lightningd/peer_control.h index b2cc8fadf..281538ea9 100644 --- a/lightningd/peer_control.h +++ b/lightningd/peer_control.h @@ -39,6 +39,7 @@ struct peer { /* Where we connected to, or it connected from. */ struct wireaddr_internal addr; + bool connected_incoming; /* We keep a copy of their feature bits */ const u8 *their_features; @@ -56,7 +57,8 @@ struct peer *find_peer_by_dbid(struct lightningd *ld, u64 dbid); struct peer *new_peer(struct lightningd *ld, u64 dbid, const struct node_id *id, - const struct wireaddr_internal *addr); + const struct wireaddr_internal *addr, + bool connected_incoming); /* Last one out deletes peer. Also removes from db. */ void maybe_delete_peer(struct peer *peer); diff --git a/wallet/db_postgres_sqlgen.c b/wallet/db_postgres_sqlgen.c index 50fc21767..bf37ff7a8 100644 --- a/wallet/db_postgres_sqlgen.c +++ b/wallet/db_postgres_sqlgen.c @@ -1888,4 +1888,4 @@ struct db_query db_postgres_queries[] = { #endif /* LIGHTNINGD_WALLET_GEN_DB_POSTGRES */ -// SHA256STAMP:08adbcdb1d190901ae39605a2c1cb0d4639f6d88ddff2f1cd370e1fdc9663a2d +// SHA256STAMP:3744f07477049e8640c44c9d9d2ba90672e0cc5ca610b6e7cda7b593085a1f63 diff --git a/wallet/db_sqlite3_sqlgen.c b/wallet/db_sqlite3_sqlgen.c index e7e6ca455..c30a603f4 100644 --- a/wallet/db_sqlite3_sqlgen.c +++ b/wallet/db_sqlite3_sqlgen.c @@ -1888,4 +1888,4 @@ struct db_query db_sqlite3_queries[] = { #endif /* LIGHTNINGD_WALLET_GEN_DB_SQLITE3 */ -// SHA256STAMP:08adbcdb1d190901ae39605a2c1cb0d4639f6d88ddff2f1cd370e1fdc9663a2d +// SHA256STAMP:3744f07477049e8640c44c9d9d2ba90672e0cc5ca610b6e7cda7b593085a1f63 diff --git a/wallet/statements_gettextgen.po b/wallet/statements_gettextgen.po index 1e8aae9fe..38fc958b9 100644 --- a/wallet/statements_gettextgen.po +++ b/wallet/statements_gettextgen.po @@ -822,411 +822,411 @@ msgstr "" msgid "SELECT id, node_id, address FROM peers WHERE id=?;" msgstr "" -#: wallet/wallet.c:841 +#: wallet/wallet.c:842 msgid "SELECT signature FROM htlc_sigs WHERE channelid = ?" msgstr "" -#: wallet/wallet.c:875 +#: wallet/wallet.c:876 msgid "SELECT remote_ann_node_sig, remote_ann_bitcoin_sig FROM channels WHERE id = ?" msgstr "" -#: wallet/wallet.c:919 +#: wallet/wallet.c:920 msgid "SELECT hstate, feerate_per_kw FROM channel_feerates WHERE channel_id = ?" msgstr "" -#: wallet/wallet.c:952 +#: wallet/wallet.c:953 msgid "INSERT INTO channel_funding_inflights ( channel_id, funding_tx_id, funding_tx_outnum, funding_feerate, funding_satoshi, our_funding_satoshi, funding_psbt, last_tx, last_sig) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?);" msgstr "" -#: wallet/wallet.c:987 +#: wallet/wallet.c:988 msgid "UPDATE channel_funding_inflights SET funding_psbt=?, funding_tx_remote_sigs_received=? WHERE channel_id=? AND funding_tx_id=? AND funding_tx_outnum=?" msgstr "" -#: wallet/wallet.c:1040 +#: wallet/wallet.c:1041 msgid "SELECT funding_tx_id, funding_tx_outnum, funding_feerate, funding_satoshi, our_funding_satoshi, funding_psbt, last_tx, last_sig, funding_tx_remote_sigs_received FROM channel_funding_inflights WHERE channel_id = ?" msgstr "" -#: wallet/wallet.c:1268 +#: wallet/wallet.c:1269 msgid "SELECT id FROM channels ORDER BY id DESC LIMIT 1;" msgstr "" -#: wallet/wallet.c:1285 +#: wallet/wallet.c:1286 msgid "SELECT id, peer_id, short_channel_id, full_channel_id, channel_config_local, channel_config_remote, state, funder, channel_flags, minimum_depth, next_index_local, next_index_remote, next_htlc_id, funding_tx_id, funding_tx_outnum, funding_satoshi, our_funding_satoshi, funding_locked_remote, push_msatoshi, msatoshi_local, fundingkey_remote, revocation_basepoint_remote, payment_basepoint_remote, htlc_basepoint_remote, delayed_payment_basepoint_remote, per_commit_remote, old_per_commit_remote, local_feerate_per_kw, remote_feerate_per_kw, shachain_remote_id, shutdown_scriptpubkey_remote, shutdown_keyidx_local, last_sent_commit_state, last_sent_commit_id, last_tx, last_sig, last_was_revoke, first_blocknum, min_possible_feerate, max_possible_feerate, msatoshi_to_us_min, msatoshi_to_us_max, future_per_commitment_point, last_sent_commit, feerate_base, feerate_ppm, remote_upfront_shutdown_script, option_static_remotekey, option_anchor_outputs, shutdown_scriptpubkey_local, closer, state_change_reason, revocation_basepoint_local, payment_basepoint_local, htlc_basepoint_local, delayed_payment_basepoint_local, funding_pubkey_local, shutdown_wrong_txid, shutdown_wrong_outnum FROM channels WHERE state != ?;" msgstr "" -#: wallet/wallet.c:1383 +#: wallet/wallet.c:1384 msgid "UPDATE channels SET in_payments_offered = COALESCE(in_payments_offered, 0) + 1 , in_msatoshi_offered = COALESCE(in_msatoshi_offered, 0) + ? WHERE id = ?;" msgstr "" -#: wallet/wallet.c:1388 +#: wallet/wallet.c:1389 msgid "UPDATE channels SET in_payments_fulfilled = COALESCE(in_payments_fulfilled, 0) + 1 , in_msatoshi_fulfilled = COALESCE(in_msatoshi_fulfilled, 0) + ? WHERE id = ?;" msgstr "" -#: wallet/wallet.c:1393 +#: wallet/wallet.c:1394 msgid "UPDATE channels SET out_payments_offered = COALESCE(out_payments_offered, 0) + 1 , out_msatoshi_offered = COALESCE(out_msatoshi_offered, 0) + ? WHERE id = ?;" msgstr "" -#: wallet/wallet.c:1398 +#: wallet/wallet.c:1399 msgid "UPDATE channels SET out_payments_fulfilled = COALESCE(out_payments_fulfilled, 0) + 1 , out_msatoshi_fulfilled = COALESCE(out_msatoshi_fulfilled, 0) + ? WHERE id = ?;" msgstr "" -#: wallet/wallet.c:1440 +#: wallet/wallet.c:1441 msgid "SELECT in_payments_offered, in_payments_fulfilled, in_msatoshi_offered, in_msatoshi_fulfilled, out_payments_offered, out_payments_fulfilled, out_msatoshi_offered, out_msatoshi_fulfilled FROM channels WHERE id = ?" msgstr "" -#: wallet/wallet.c:1469 +#: wallet/wallet.c:1470 msgid "SELECT MIN(height), MAX(height) FROM blocks;" msgstr "" -#: wallet/wallet.c:1491 +#: wallet/wallet.c:1492 msgid "INSERT INTO channel_configs DEFAULT VALUES;" msgstr "" -#: wallet/wallet.c:1503 +#: wallet/wallet.c:1504 msgid "UPDATE channel_configs SET dust_limit_satoshis=?, max_htlc_value_in_flight_msat=?, channel_reserve_satoshis=?, htlc_minimum_msat=?, to_self_delay=?, max_accepted_htlcs=? WHERE id=?;" msgstr "" -#: wallet/wallet.c:1527 +#: wallet/wallet.c:1528 msgid "SELECT id, dust_limit_satoshis, max_htlc_value_in_flight_msat, channel_reserve_satoshis, htlc_minimum_msat, to_self_delay, max_accepted_htlcs FROM channel_configs WHERE id= ? ;" msgstr "" -#: wallet/wallet.c:1561 +#: wallet/wallet.c:1562 msgid "UPDATE channels SET remote_ann_node_sig=?, remote_ann_bitcoin_sig=? WHERE id=?" msgstr "" -#: wallet/wallet.c:1580 +#: wallet/wallet.c:1581 msgid "UPDATE channels SET shachain_remote_id=?, short_channel_id=?, full_channel_id=?, state=?, funder=?, channel_flags=?, minimum_depth=?, next_index_local=?, next_index_remote=?, next_htlc_id=?, funding_tx_id=?, funding_tx_outnum=?, funding_satoshi=?, our_funding_satoshi=?, funding_locked_remote=?, push_msatoshi=?, msatoshi_local=?, shutdown_scriptpubkey_remote=?, shutdown_keyidx_local=?, channel_config_local=?, last_tx=?, last_sig=?, last_was_revoke=?, min_possible_feerate=?, max_possible_feerate=?, msatoshi_to_us_min=?, msatoshi_to_us_max=?, feerate_base=?, feerate_ppm=?, remote_upfront_shutdown_script=?, option_static_remotekey=?, option_anchor_outputs=?, shutdown_scriptpubkey_local=?, closer=?, state_change_reason=?, shutdown_wrong_txid=?, shutdown_wrong_outnum=? WHERE id=?" msgstr "" -#: wallet/wallet.c:1672 +#: wallet/wallet.c:1673 msgid "UPDATE channels SET fundingkey_remote=?, revocation_basepoint_remote=?, payment_basepoint_remote=?, htlc_basepoint_remote=?, delayed_payment_basepoint_remote=?, per_commit_remote=?, old_per_commit_remote=?, channel_config_remote=?, future_per_commitment_point=? WHERE id=?" msgstr "" -#: wallet/wallet.c:1699 +#: wallet/wallet.c:1700 msgid "DELETE FROM channel_feerates WHERE channel_id=?" msgstr "" -#: wallet/wallet.c:1709 +#: wallet/wallet.c:1710 msgid "INSERT INTO channel_feerates VALUES(?, ?, ?)" msgstr "" -#: wallet/wallet.c:1726 +#: wallet/wallet.c:1727 msgid "UPDATE channels SET last_sent_commit=? WHERE id=?" msgstr "" -#: wallet/wallet.c:1749 +#: wallet/wallet.c:1750 msgid "INSERT INTO channel_state_changes ( channel_id, timestamp, old_state, new_state, cause, message) VALUES (?, ?, ?, ?, ?, ?);" msgstr "" -#: wallet/wallet.c:1777 +#: wallet/wallet.c:1778 msgid "SELECT timestamp, old_state, new_state, cause, message FROM channel_state_changes WHERE channel_id = ? ORDER BY timestamp ASC;" msgstr "" -#: wallet/wallet.c:1806 +#: wallet/wallet.c:1807 msgid "SELECT id FROM peers WHERE node_id = ?" msgstr "" -#: wallet/wallet.c:1818 +#: wallet/wallet.c:1819 msgid "UPDATE peers SET address = ? WHERE id = ?" msgstr "" -#: wallet/wallet.c:1827 +#: wallet/wallet.c:1828 msgid "INSERT INTO peers (node_id, address) VALUES (?, ?);" msgstr "" -#: wallet/wallet.c:1848 +#: wallet/wallet.c:1849 msgid "INSERT INTO channels ( peer_id, first_blocknum, id, revocation_basepoint_local, payment_basepoint_local, htlc_basepoint_local, delayed_payment_basepoint_local, funding_pubkey_local) VALUES (?, ?, ?, ?, ?, ?, ?, ?);" msgstr "" -#: wallet/wallet.c:1889 +#: wallet/wallet.c:1890 msgid "DELETE FROM channel_htlcs WHERE channel_id=?" msgstr "" -#: wallet/wallet.c:1895 +#: wallet/wallet.c:1896 msgid "DELETE FROM htlc_sigs WHERE channelid=?" msgstr "" -#: wallet/wallet.c:1901 +#: wallet/wallet.c:1902 msgid "DELETE FROM channeltxs WHERE channel_id=?" msgstr "" -#: wallet/wallet.c:1908 +#: wallet/wallet.c:1909 msgid "DELETE FROM channel_funding_inflights WHERE channel_id=?" msgstr "" -#: wallet/wallet.c:1914 +#: wallet/wallet.c:1915 msgid "DELETE FROM shachains WHERE id IN ( SELECT shachain_remote_id FROM channels WHERE channels.id=?)" msgstr "" -#: wallet/wallet.c:1924 +#: wallet/wallet.c:1925 msgid "UPDATE channels SET state=?, peer_id=? WHERE channels.id=?" msgstr "" -#: wallet/wallet.c:1938 +#: wallet/wallet.c:1939 msgid "SELECT * FROM channels WHERE peer_id = ?;" msgstr "" -#: wallet/wallet.c:1946 +#: wallet/wallet.c:1947 msgid "DELETE FROM peers WHERE id=?" msgstr "" -#: wallet/wallet.c:1957 +#: wallet/wallet.c:1958 msgid "UPDATE outputs SET confirmation_height = ? WHERE prev_out_tx = ?" msgstr "" -#: wallet/wallet.c:2060 +#: wallet/wallet.c:2061 msgid "INSERT INTO channel_htlcs ( channel_id, channel_htlc_id, direction, msatoshi, cltv_expiry, payment_hash, payment_key, hstate, shared_secret, routing_onion, received_time) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);" msgstr "" -#: wallet/wallet.c:2113 +#: wallet/wallet.c:2114 msgid "INSERT INTO channel_htlcs ( channel_id, channel_htlc_id, direction, origin_htlc, msatoshi, cltv_expiry, payment_hash, payment_key, hstate, routing_onion, malformed_onion, partid) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, 0, ?);" msgstr "" -#: wallet/wallet.c:2174 +#: wallet/wallet.c:2175 msgid "UPDATE channel_htlcs SET hstate=?, payment_key=?, malformed_onion=?, failuremsg=?, localfailmsg=?, we_filled=? WHERE id=?" msgstr "" -#: wallet/wallet.c:2390 +#: wallet/wallet.c:2391 msgid "SELECT id, channel_htlc_id, msatoshi, cltv_expiry, hstate, payment_hash, payment_key, routing_onion, failuremsg, malformed_onion, origin_htlc, shared_secret, received_time, we_filled FROM channel_htlcs WHERE direction= ? AND channel_id= ? AND hstate != ?" msgstr "" -#: wallet/wallet.c:2437 +#: wallet/wallet.c:2438 msgid "SELECT id, channel_htlc_id, msatoshi, cltv_expiry, hstate, payment_hash, payment_key, routing_onion, failuremsg, malformed_onion, origin_htlc, shared_secret, received_time, partid, localfailmsg FROM channel_htlcs WHERE direction = ? AND channel_id = ? AND hstate != ?" msgstr "" -#: wallet/wallet.c:2568 +#: wallet/wallet.c:2569 msgid "SELECT channel_id, direction, cltv_expiry, channel_htlc_id, payment_hash FROM channel_htlcs WHERE channel_id = ?;" msgstr "" -#: wallet/wallet.c:2602 +#: wallet/wallet.c:2603 msgid "DELETE FROM channel_htlcs WHERE direction = ? AND origin_htlc = ? AND payment_hash = ? AND partid = ?;" msgstr "" -#: wallet/wallet.c:2655 +#: wallet/wallet.c:2656 msgid "SELECT status FROM payments WHERE payment_hash=? AND partid = ?;" msgstr "" -#: wallet/wallet.c:2673 +#: wallet/wallet.c:2674 msgid "INSERT INTO payments ( status, payment_hash, destination, msatoshi, timestamp, path_secrets, route_nodes, route_channels, msatoshi_sent, description, bolt11, total_msat, partid, local_offer_id) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?);" msgstr "" -#: wallet/wallet.c:2762 +#: wallet/wallet.c:2763 msgid "DELETE FROM payments WHERE payment_hash = ? AND partid = ?" msgstr "" -#: wallet/wallet.c:2776 +#: wallet/wallet.c:2777 msgid "DELETE FROM payments WHERE payment_hash = ?" msgstr "" -#: wallet/wallet.c:2877 +#: wallet/wallet.c:2878 msgid "SELECT id, status, destination, msatoshi, payment_hash, timestamp, payment_preimage, path_secrets, route_nodes, route_channels, msatoshi_sent, description, bolt11, failonionreply, total_msat, partid, local_offer_id FROM payments WHERE payment_hash = ? AND partid = ?" msgstr "" -#: wallet/wallet.c:2927 +#: wallet/wallet.c:2928 msgid "UPDATE payments SET status=? WHERE payment_hash=? AND partid=?" msgstr "" -#: wallet/wallet.c:2937 +#: wallet/wallet.c:2938 msgid "UPDATE payments SET payment_preimage=? WHERE payment_hash=? AND partid=?" msgstr "" -#: wallet/wallet.c:2947 +#: wallet/wallet.c:2948 msgid "UPDATE payments SET path_secrets = NULL , route_nodes = NULL , route_channels = NULL WHERE payment_hash = ? AND partid = ?;" msgstr "" -#: wallet/wallet.c:2979 +#: wallet/wallet.c:2980 msgid "SELECT failonionreply, faildestperm, failindex, failcode, failnode, failchannel, failupdate, faildetail, faildirection FROM payments WHERE payment_hash=? AND partid=?;" msgstr "" -#: wallet/wallet.c:3046 +#: wallet/wallet.c:3047 msgid "UPDATE payments SET failonionreply=? , faildestperm=? , failindex=? , failcode=? , failnode=? , failchannel=? , failupdate=? , faildetail=? , faildirection=? WHERE payment_hash=? AND partid=?;" msgstr "" -#: wallet/wallet.c:3105 +#: wallet/wallet.c:3106 msgid "SELECT id, status, destination, msatoshi, payment_hash, timestamp, payment_preimage, path_secrets, route_nodes, route_channels, msatoshi_sent, description, bolt11, failonionreply, total_msat, partid, local_offer_id FROM payments WHERE payment_hash = ?;" msgstr "" -#: wallet/wallet.c:3127 +#: wallet/wallet.c:3128 msgid "SELECT id, status, destination, msatoshi, payment_hash, timestamp, payment_preimage, path_secrets, route_nodes, route_channels, msatoshi_sent, description, bolt11, failonionreply, total_msat, partid, local_offer_id FROM payments ORDER BY id;" msgstr "" -#: wallet/wallet.c:3178 +#: wallet/wallet.c:3179 msgid "SELECT id, status, destination, msatoshi, payment_hash, timestamp, payment_preimage, path_secrets, route_nodes, route_channels, msatoshi_sent, description, bolt11, failonionreply, total_msat, partid, local_offer_id FROM payments WHERE local_offer_id = ?;" msgstr "" -#: wallet/wallet.c:3223 +#: wallet/wallet.c:3224 msgid "DELETE FROM htlc_sigs WHERE channelid = ?" msgstr "" -#: wallet/wallet.c:3230 +#: wallet/wallet.c:3231 msgid "INSERT INTO htlc_sigs (channelid, signature) VALUES (?, ?)" msgstr "" -#: wallet/wallet.c:3242 +#: wallet/wallet.c:3243 msgid "SELECT blobval FROM vars WHERE name='genesis_hash'" msgstr "" -#: wallet/wallet.c:3266 +#: wallet/wallet.c:3267 msgid "INSERT INTO vars (name, blobval) VALUES ('genesis_hash', ?);" msgstr "" -#: wallet/wallet.c:3284 +#: wallet/wallet.c:3285 msgid "SELECT txid, outnum FROM utxoset WHERE spendheight < ?" msgstr "" -#: wallet/wallet.c:3296 +#: wallet/wallet.c:3297 msgid "DELETE FROM utxoset WHERE spendheight < ?" msgstr "" -#: wallet/wallet.c:3304 wallet/wallet.c:3418 +#: wallet/wallet.c:3305 wallet/wallet.c:3419 msgid "INSERT INTO blocks (height, hash, prev_hash) VALUES (?, ?, ?);" msgstr "" -#: wallet/wallet.c:3323 +#: wallet/wallet.c:3324 msgid "DELETE FROM blocks WHERE hash = ?" msgstr "" -#: wallet/wallet.c:3329 +#: wallet/wallet.c:3330 msgid "SELECT * FROM blocks WHERE height >= ?;" msgstr "" -#: wallet/wallet.c:3338 +#: wallet/wallet.c:3339 msgid "DELETE FROM blocks WHERE height > ?" msgstr "" -#: wallet/wallet.c:3350 +#: wallet/wallet.c:3351 msgid "UPDATE outputs SET spend_height = ?, status = ? WHERE prev_out_tx = ? AND prev_out_index = ?" msgstr "" -#: wallet/wallet.c:3368 +#: wallet/wallet.c:3369 msgid "UPDATE utxoset SET spendheight = ? WHERE txid = ? AND outnum = ?" msgstr "" -#: wallet/wallet.c:3391 wallet/wallet.c:3429 +#: wallet/wallet.c:3392 wallet/wallet.c:3430 msgid "INSERT INTO utxoset ( txid, outnum, blockheight, spendheight, txindex, scriptpubkey, satoshis) VALUES(?, ?, ?, ?, ?, ?, ?);" msgstr "" -#: wallet/wallet.c:3455 +#: wallet/wallet.c:3456 msgid "SELECT height FROM blocks WHERE height = ?" msgstr "" -#: wallet/wallet.c:3468 +#: wallet/wallet.c:3469 msgid "SELECT txid, spendheight, scriptpubkey, satoshis FROM utxoset WHERE blockheight = ? AND txindex = ? AND outnum = ? AND spendheight IS NULL" msgstr "" -#: wallet/wallet.c:3510 +#: wallet/wallet.c:3511 msgid "SELECT blockheight, txindex, outnum FROM utxoset WHERE spendheight = ?" msgstr "" -#: wallet/wallet.c:3541 wallet/wallet.c:3701 +#: wallet/wallet.c:3542 wallet/wallet.c:3702 msgid "SELECT blockheight FROM transactions WHERE id=?" msgstr "" -#: wallet/wallet.c:3551 +#: wallet/wallet.c:3552 msgid "INSERT INTO transactions ( id, blockheight, txindex, rawtx) VALUES (?, ?, ?, ?);" msgstr "" -#: wallet/wallet.c:3572 +#: wallet/wallet.c:3573 msgid "UPDATE transactions SET blockheight = ?, txindex = ? WHERE id = ?" msgstr "" -#: wallet/wallet.c:3589 +#: wallet/wallet.c:3590 msgid "INSERT INTO transaction_annotations (txid, idx, location, type, channel) VALUES (?, ?, ?, ?, ?) ON CONFLICT(txid,idx) DO NOTHING;" msgstr "" -#: wallet/wallet.c:3621 +#: wallet/wallet.c:3622 msgid "SELECT type, channel_id FROM transactions WHERE id=?" msgstr "" -#: wallet/wallet.c:3637 +#: wallet/wallet.c:3638 msgid "UPDATE transactions SET type = ?, channel_id = ? WHERE id = ?" msgstr "" -#: wallet/wallet.c:3656 +#: wallet/wallet.c:3657 msgid "SELECT type FROM transactions WHERE id=?" msgstr "" -#: wallet/wallet.c:3679 +#: wallet/wallet.c:3680 msgid "SELECT rawtx FROM transactions WHERE id=?" msgstr "" -#: wallet/wallet.c:3725 +#: wallet/wallet.c:3726 msgid "SELECT blockheight, txindex FROM transactions WHERE id=?" msgstr "" -#: wallet/wallet.c:3753 +#: wallet/wallet.c:3754 msgid "SELECT id FROM transactions WHERE blockheight=?" msgstr "" -#: wallet/wallet.c:3772 +#: wallet/wallet.c:3773 msgid "INSERT INTO channeltxs ( channel_id, type, transaction_id, input_num, blockheight) VALUES (?, ?, ?, ?, ?);" msgstr "" -#: wallet/wallet.c:3796 +#: wallet/wallet.c:3797 msgid "SELECT DISTINCT(channel_id) FROM channeltxs WHERE type = ?;" msgstr "" -#: wallet/wallet.c:3817 +#: wallet/wallet.c:3818 msgid "SELECT c.type, c.blockheight, t.rawtx, c.input_num, c.blockheight - t.blockheight + 1 AS depth, t.id as txid FROM channeltxs c JOIN transactions t ON t.id = c.transaction_id WHERE c.channel_id = ? ORDER BY c.id ASC;" msgstr "" -#: wallet/wallet.c:3862 +#: wallet/wallet.c:3863 msgid "UPDATE forwarded_payments SET in_msatoshi=?, out_msatoshi=?, state=?, resolved_time=?, failcode=? WHERE in_htlc_id=?" msgstr "" -#: wallet/wallet.c:3920 +#: wallet/wallet.c:3921 msgid "INSERT INTO forwarded_payments ( in_htlc_id, out_htlc_id, in_channel_scid, out_channel_scid, in_msatoshi, out_msatoshi, state, received_time, resolved_time, failcode) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?);" msgstr "" -#: wallet/wallet.c:3979 +#: wallet/wallet.c:3980 msgid "SELECT CAST(COALESCE(SUM(in_msatoshi - out_msatoshi), 0) AS BIGINT)FROM forwarded_payments WHERE state = ?;" msgstr "" -#: wallet/wallet.c:4028 +#: wallet/wallet.c:4029 msgid "SELECT f.state, in_msatoshi, out_msatoshi, hin.payment_hash as payment_hash, in_channel_scid, out_channel_scid, f.received_time, f.resolved_time, f.failcode FROM forwarded_payments f LEFT JOIN channel_htlcs hin ON (f.in_htlc_id = hin.id) WHERE (1 = ? OR f.state = ?) AND (1 = ? OR f.in_channel_scid = ?) AND (1 = ? OR f.out_channel_scid = ?)" msgstr "" -#: wallet/wallet.c:4150 +#: wallet/wallet.c:4151 msgid "SELECT t.id, t.rawtx, t.blockheight, t.txindex, t.type as txtype, c2.short_channel_id as txchan, a.location, a.idx as ann_idx, a.type as annotation_type, c.short_channel_id FROM transactions t LEFT JOIN transaction_annotations a ON (a.txid = t.id) LEFT JOIN channels c ON (a.channel = c.id) LEFT JOIN channels c2 ON (t.channel_id = c2.id) ORDER BY t.blockheight, t.txindex ASC" msgstr "" -#: wallet/wallet.c:4244 +#: wallet/wallet.c:4245 msgid "INSERT INTO penalty_bases ( channel_id, commitnum, txid, outnum, amount) VALUES (?, ?, ?, ?, ?);" msgstr "" -#: wallet/wallet.c:4269 +#: wallet/wallet.c:4270 msgid "SELECT commitnum, txid, outnum, amount FROM penalty_bases WHERE channel_id = ?" msgstr "" -#: wallet/wallet.c:4293 +#: wallet/wallet.c:4294 msgid "DELETE FROM penalty_bases WHERE channel_id = ? AND commitnum = ?" msgstr "" -#: wallet/wallet.c:4311 +#: wallet/wallet.c:4312 msgid "SELECT 1 FROM offers WHERE offer_id = ?;" msgstr "" -#: wallet/wallet.c:4324 +#: wallet/wallet.c:4325 msgid "INSERT INTO offers ( offer_id, bolt12, label, status) VALUES (?, ?, ?, ?);" msgstr "" -#: wallet/wallet.c:4351 +#: wallet/wallet.c:4352 msgid "SELECT bolt12, label, status FROM offers WHERE offer_id = ?;" msgstr "" -#: wallet/wallet.c:4379 +#: wallet/wallet.c:4380 msgid "SELECT offer_id FROM offers;" msgstr "" -#: wallet/wallet.c:4405 +#: wallet/wallet.c:4406 msgid "UPDATE offers SET status=? WHERE offer_id = ?;" msgstr "" -#: wallet/wallet.c:4416 +#: wallet/wallet.c:4417 msgid "UPDATE invoices SET state=? WHERE state=? AND local_offer_id = ?;" msgstr "" -#: wallet/wallet.c:4444 +#: wallet/wallet.c:4445 msgid "SELECT status FROM offers WHERE offer_id = ?;" msgstr "" @@ -1245,4 +1245,4 @@ msgstr "" #: wallet/test/run-wallet.c:1643 msgid "INSERT INTO channels (id) VALUES (1);" msgstr "" -# SHA256STAMP:b110e3333958e18759ec9a2cf17840a3ded609edbdd6001962888a0152ac879c +# SHA256STAMP:20d1dab0cbcccd97d272a24875a28c235580a45f422db8ae2c375dab07361a86 diff --git a/wallet/test/run-wallet.c b/wallet/test/run-wallet.c index 749cb15b0..a6c720a84 100644 --- a/wallet/test/run-wallet.c +++ b/wallet/test/run-wallet.c @@ -1319,7 +1319,7 @@ static bool test_channel_crud(struct lightningd *ld, const tal_t *ctx) parse_wireaddr_internal("localhost:1234", &addr, 0, false, false, false, NULL); c1.final_key_idx = 1337; - p = new_peer(ld, 0, &id, &addr); + p = new_peer(ld, 0, &id, &addr, false); c1.peer = p; c1.dbid = wallet_get_channel_dbid(w); c1.state = CHANNELD_NORMAL; @@ -1481,7 +1481,7 @@ static bool test_channel_inflight_crud(struct lightningd *ld, const tal_t *ctx) NULL); /* new channel! */ - p = new_peer(ld, 0, &id, &addr); + p = new_peer(ld, 0, &id, &addr, false); funding_sats = AMOUNT_SAT(4444444); our_sats = AMOUNT_SAT(3333333); diff --git a/wallet/wallet.c b/wallet/wallet.c index d1e5b82f3..33b689aa2 100644 --- a/wallet/wallet.c +++ b/wallet/wallet.c @@ -823,7 +823,8 @@ static struct peer *wallet_peer_load(struct wallet *w, const u64 dbid) if (!parse_wireaddr_internal((const char*)addrstr, &addr, DEFAULT_PORT, false, false, true, NULL)) goto done; - peer = new_peer(w->ld, db_column_u64(stmt, 0), &id, &addr); + /* FIXME: save incoming in db! */ + peer = new_peer(w->ld, db_column_u64(stmt, 0), &id, &addr, false); done: tal_free(stmt);