From af70d264e54d1bb9b1a1099401de268df013d7b7 Mon Sep 17 00:00:00 2001 From: darosior Date: Wed, 25 Dec 2019 00:34:59 +0100 Subject: [PATCH 1/3] connectd: check all chain hashs of the TLV array --- connectd/peer_exchange_initmsg.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/connectd/peer_exchange_initmsg.c b/connectd/peer_exchange_initmsg.c index a9fd483ce9f1..0c340f45d1ec 100644 --- a/connectd/peer_exchange_initmsg.c +++ b/connectd/peer_exchange_initmsg.c @@ -30,7 +30,7 @@ struct peer { static bool contains_common_chain(struct bitcoin_blkid *chains) { for (size_t i = 0; i < tal_count(chains); i++) { - if (bitcoin_blkid_eq(&chains[0], &chainparams->genesis_blockhash)) + if (bitcoin_blkid_eq(&chains[i], &chainparams->genesis_blockhash)) return true; } return false; From 6b7a73f222afe592a31e7bed66054651592499b8 Mon Sep 17 00:00:00 2001 From: darosior Date: Wed, 25 Dec 2019 00:35:17 +0100 Subject: [PATCH 2/3] connectd: clean up a redundant check --- connectd/peer_exchange_initmsg.c | 6 ------ 1 file changed, 6 deletions(-) diff --git a/connectd/peer_exchange_initmsg.c b/connectd/peer_exchange_initmsg.c index 0c340f45d1ec..580d022db5fa 100644 --- a/connectd/peer_exchange_initmsg.c +++ b/connectd/peer_exchange_initmsg.c @@ -75,12 +75,6 @@ static struct io_plan *peer_init_received(struct io_conn *conn, * - MAY fail the connection. */ if (tlvs->networks) { - if (!tlvs->networks->chains) { - status_peer_debug(&peer->id, - "bad networks TLV in init '%s', closing", - tal_hex(tmpctx, msg)); - return io_close(conn); - } if (!contains_common_chain(tlvs->networks->chains)) { status_peer_debug(&peer->id, "No common chain with this peer '%s', closing", From d45c27935ad5b7085423e35ef1dd835029ec7f2c Mon Sep 17 00:00:00 2001 From: darosior Date: Wed, 25 Dec 2019 21:11:04 +0100 Subject: [PATCH 3/3] connectd: return error when no common chain at init This is useful for testing. --- connectd/peer_exchange_initmsg.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/connectd/peer_exchange_initmsg.c b/connectd/peer_exchange_initmsg.c index 580d022db5fa..865d02199f11 100644 --- a/connectd/peer_exchange_initmsg.c +++ b/connectd/peer_exchange_initmsg.c @@ -79,7 +79,9 @@ static struct io_plan *peer_init_received(struct io_conn *conn, status_peer_debug(&peer->id, "No common chain with this peer '%s', closing", tal_hex(tmpctx, msg)); - return io_close(conn); + msg = towire_errorfmt(NULL, NULL, "No common network"); + msg = cryptomsg_encrypt_msg(NULL, &peer->cs, take(msg)); + return io_write(conn, msg, tal_count(msg), io_close_cb, NULL); } }