mirror of
https://github.com/ElementsProject/lightning.git
synced 2025-03-15 20:09:18 +01:00
connectd: remove the redundant "already connected" logic.
It should now be reliable, so we don't need this. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
This commit is contained in:
parent
9b6c97437e
commit
40145e619b
3 changed files with 16 additions and 38 deletions
|
@ -1743,18 +1743,10 @@ static void try_connect_peer(struct daemon *daemon,
|
|||
struct wireaddr_internal *addrs;
|
||||
bool use_proxy = daemon->always_use_proxy;
|
||||
struct connecting *connect;
|
||||
struct peer *existing;
|
||||
|
||||
/* Already existing? */
|
||||
existing = peer_htable_get(&daemon->peers, id);
|
||||
if (existing) {
|
||||
/* FIXME: Tell it it's already connected so it doesn't
|
||||
* wait forever. */
|
||||
daemon_conn_send(daemon->master,
|
||||
take(towire_connectd_peer_already_connected
|
||||
(NULL, id)));
|
||||
/* Already existing? Must have crossed over, it'll know soon. */
|
||||
if (peer_htable_get(&daemon->peers, id))
|
||||
return;
|
||||
}
|
||||
|
||||
/* If we're trying to connect it right now, that's OK. */
|
||||
if ((connect = find_connecting(daemon, id))) {
|
||||
|
@ -1826,8 +1818,7 @@ static void try_connect_peer(struct daemon *daemon,
|
|||
tal_add_destructor(connect, destroy_connecting);
|
||||
|
||||
/* Now we kick it off by recursively trying connect->addrs[connect->addrnum] */
|
||||
if (!existing)
|
||||
try_connect_one_addr(connect);
|
||||
try_connect_one_addr(connect);
|
||||
}
|
||||
|
||||
/* lightningd tells us to connect to a peer by id, with optional addr hint. */
|
||||
|
@ -1967,7 +1958,6 @@ static struct io_plan *recv_req(struct io_conn *conn,
|
|||
case WIRE_CONNECTD_INIT_REPLY:
|
||||
case WIRE_CONNECTD_ACTIVATE_REPLY:
|
||||
case WIRE_CONNECTD_PEER_CONNECTED:
|
||||
case WIRE_CONNECTD_PEER_ALREADY_CONNECTED:
|
||||
case WIRE_CONNECTD_PEER_ACTIVE:
|
||||
case WIRE_CONNECTD_CONNECT_FAILED:
|
||||
case WIRE_CONNECTD_DEV_MEMLEAK_REPLY:
|
||||
|
|
|
@ -95,10 +95,6 @@ msgdata,connectd_peer_final_msg,id,node_id,
|
|||
msgdata,connectd_peer_final_msg,len,u16,
|
||||
msgdata,connectd_peer_final_msg,msg,u8,len
|
||||
|
||||
# connectd->master: You said to connect, but we already were.
|
||||
msgtype,connectd_peer_already_connected,2007
|
||||
msgdata,connectd_peer_already_connected,id,node_id,
|
||||
|
||||
# master -> connectd: do you have a memleak?
|
||||
msgtype,connectd_dev_memleak,2033
|
||||
|
||||
|
|
|
|
@ -183,6 +183,7 @@ static struct command_result *json_connect(struct command *cmd,
|
|||
struct wireaddr_internal *addr;
|
||||
const char *err_msg;
|
||||
struct id_and_addr id_addr;
|
||||
struct peer *peer;
|
||||
|
||||
id_addr.host = NULL;
|
||||
id_addr.port = NULL;
|
||||
|
@ -214,7 +215,18 @@ static struct command_result *json_connect(struct command *cmd,
|
|||
"Can't specify port without host");
|
||||
}
|
||||
|
||||
try_connect(cmd, cmd->ld, &id_addr.id, 0, addr);
|
||||
/* If we know about peer, see if it's already connected. */
|
||||
peer = peer_by_id(cmd->ld, &id_addr.id);
|
||||
if (peer && peer->is_connected) {
|
||||
log_debug(cmd->ld->log, "Already connected via %s",
|
||||
type_to_string(tmpctx, struct wireaddr_internal,
|
||||
&peer->addr));
|
||||
return connect_cmd_succeed(cmd, peer,
|
||||
peer->connected_incoming,
|
||||
&peer->addr);
|
||||
}
|
||||
|
||||
try_connect(cmd, cmd->ld, &id_addr.id, 0, addr);
|
||||
|
||||
/* Leave this here for peer_connected or connect_failed. */
|
||||
new_connect(cmd->ld, &id_addr.id, cmd);
|
||||
|
@ -371,21 +383,6 @@ void connect_succeeded(struct lightningd *ld, const struct peer *peer,
|
|||
}
|
||||
}
|
||||
|
||||
static void peer_already_connected(struct lightningd *ld, const u8 *msg)
|
||||
{
|
||||
struct node_id id;
|
||||
struct peer *peer;
|
||||
|
||||
if (!fromwire_connectd_peer_already_connected(msg, &id))
|
||||
fatal("Bad msg %s from connectd", tal_hex(tmpctx, msg));
|
||||
|
||||
peer = peer_by_id(ld, &id);
|
||||
if (peer)
|
||||
connect_succeeded(ld, peer,
|
||||
peer->connected_incoming,
|
||||
&peer->addr);
|
||||
}
|
||||
|
||||
struct custommsg_payload {
|
||||
struct node_id peer_id;
|
||||
u8 *msg;
|
||||
|
@ -481,10 +478,6 @@ static unsigned connectd_msg(struct subd *connectd, const u8 *msg, const int *fd
|
|||
peer_disconnect_done(connectd->ld, msg);
|
||||
break;
|
||||
|
||||
case WIRE_CONNECTD_PEER_ALREADY_CONNECTED:
|
||||
peer_already_connected(connectd->ld, msg);
|
||||
break;
|
||||
|
||||
case WIRE_CONNECTD_CONNECT_FAILED:
|
||||
connect_failed(connectd->ld, msg);
|
||||
break;
|
||||
|
@ -508,7 +501,6 @@ static void connect_init_done(struct subd *connectd,
|
|||
struct lightningd *ld = connectd->ld;
|
||||
char *errmsg;
|
||||
|
||||
log_debug(connectd->log, "connectd_init_done");
|
||||
if (!fromwire_connectd_init_reply(ld, reply,
|
||||
&ld->binding,
|
||||
&ld->announceable,
|
||||
|
|
Loading…
Add table
Reference in a new issue