mirror of
https://github.com/ElementsProject/lightning.git
synced 2025-02-22 06:41:44 +01:00
We used to tell connectd to remember our connect delay, and hand it back (increased if necessary). Instead, simply record when we last tried to connect. If it was less than 10 minutes ago, double delay (up to 5 minutes max), otherwise reset delay to 1 second. This covers all scenarios: whether we reconnect then immediately disconnect, or never successfully connect, it doesn't matter. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> Fixes: #5453
5.9 KiB
5.9 KiB
1 | #include <bitcoin/block.h> |
---|---|
2 | #include <common/channel_id.h> |
3 | #include <common/cryptomsg.h> |
4 | #include <common/features.h> |
5 | #include <common/node_id.h> |
6 | #include <common/wireaddr.h> |
7 | #include <wire/onion_wire.h> |
8 | msgtype,connectd_init,2000 |
9 | msgdata,connectd_init,chainparams,chainparams, |
10 | msgdata,connectd_init,our_features,feature_set, |
11 | msgdata,connectd_init,id,node_id, |
12 | msgdata,connectd_init,num_wireaddrs,u16, |
13 | msgdata,connectd_init,wireaddrs,wireaddr_internal,num_wireaddrs |
14 | msgdata,connectd_init,listen_announce,enum addr_listen_announce,num_wireaddrs |
15 | msgdata,connectd_init,tor_proxyaddr,?wireaddr, |
16 | msgdata,connectd_init,use_tor_proxy_always,bool, |
17 | msgdata,connectd_init,dev_allow_localhost,bool, |
18 | msgdata,connectd_init,use_dns,bool, |
19 | msgdata,connectd_init,tor_password,wirestring, |
20 | msgdata,connectd_init,timeout_secs,u32, |
21 | msgdata,connectd_init,websocket_helper,wirestring, |
22 | msgdata,connectd_init,websocket_port,u16, |
23 | msgdata,connectd_init,announce_websocket,bool, |
24 | msgdata,connectd_init,dev_fast_gossip,bool, |
25 | # If this is set, then fd 5 is dev_disconnect_fd. |
26 | msgdata,connectd_init,dev_disconnect,bool, |
27 | msgdata,connectd_init,dev_no_ping_timer,bool, |
28 | # Connectd->master, here are the addresses I bound, can announce. |
29 | msgtype,connectd_init_reply,2100 |
30 | msgdata,connectd_init_reply,num_bindings,u16, |
31 | msgdata,connectd_init_reply,bindings,wireaddr_internal,num_bindings |
32 | msgdata,connectd_init_reply,num_announceable,u16, |
33 | msgdata,connectd_init_reply,announceable,wireaddr,num_announceable |
34 | msgdata,connectd_init_reply,failmsg,?wirestring, |
35 | # Activate the connect daemon, so others can connect. |
36 | msgtype,connectd_activate,2025 |
37 | # Do we listen? |
38 | msgdata,connectd_activate,listen,bool, |
39 | # Connectd->master, I am ready. |
40 | msgtype,connectd_activate_reply,2125 |
41 | msgdata,connectd_activate_reply,failmsg,?wirestring, |
42 | # Master -> connectd: connect to a peer. |
43 | msgtype,connectd_connect_to_peer,2001 |
44 | msgdata,connectd_connect_to_peer,id,node_id, |
45 | msgdata,connectd_connect_to_peer,len,u32, |
46 | msgdata,connectd_connect_to_peer,addrs,wireaddr,len |
47 | msgdata,connectd_connect_to_peer,addrhint,?wireaddr_internal, |
48 | # Connectd->master: connect failed. |
49 | msgtype,connectd_connect_failed,2020 |
50 | msgdata,connectd_connect_failed,id,node_id, |
51 | msgdata,connectd_connect_failed,failcode,errcode_t, |
52 | msgdata,connectd_connect_failed,failreason,wirestring, |
53 | msgdata,connectd_connect_failed,addrhint,?wireaddr_internal, |
54 | # Connectd -> master: we got a peer. |
55 | msgtype,connectd_peer_connected,2002 |
56 | msgdata,connectd_peer_connected,id,node_id, |
57 | msgdata,connectd_peer_connected,counter,u64, |
58 | msgdata,connectd_peer_connected,addr,wireaddr_internal, |
59 | msgdata,connectd_peer_connected,remote_addr,?wireaddr, |
60 | msgdata,connectd_peer_connected,incoming,bool, |
61 | msgdata,connectd_peer_connected,flen,u16, |
62 | msgdata,connectd_peer_connected,features,u8,flen |
63 | # connectd -> master: peer disconnected. |
64 | msgtype,connectd_peer_disconnect_done,2006 |
65 | msgdata,connectd_peer_disconnect_done,id,node_id, |
66 | msgdata,connectd_peer_disconnect_done,counter,u64, |
67 | # Master -> connectd: make peer active immediately (we want to talk) (+ fd to subd). |
68 | msgtype,connectd_peer_connect_subd,2004 |
69 | msgdata,connectd_peer_connect_subd,id,node_id, |
70 | msgdata,connectd_peer_connect_subd,counter,u64, |
71 | msgdata,connectd_peer_connect_subd,channel_id,channel_id, |
72 | # Connectd -> master: peer said something interesting |
73 | msgtype,connectd_peer_spoke,2005 |
74 | msgdata,connectd_peer_spoke,id,node_id, |
75 | msgdata,connectd_peer_spoke,counter,u64, |
76 | msgdata,connectd_peer_spoke,msgtype,u16, |
77 | msgdata,connectd_peer_spoke,channel_id,channel_id, |
78 | # master -> connectd: peer no longer wanted, you can disconnect. |
79 | msgtype,connectd_discard_peer,2015 |
80 | msgdata,connectd_discard_peer,id,node_id, |
81 | msgdata,connectd_discard_peer,counter,u64, |
82 | # master -> connectd: give message to peer and disconnect. |
83 | msgtype,connectd_peer_final_msg,2003 |
84 | msgdata,connectd_peer_final_msg,id,node_id, |
85 | msgdata,connectd_peer_final_msg,counter,u64, |
86 | msgdata,connectd_peer_final_msg,len,u16, |
87 | msgdata,connectd_peer_final_msg,msg,u8,len |
88 | # master -> connectd: do you have a memleak? |
89 | msgtype,connectd_dev_memleak,2033 |
90 | msgtype,connectd_dev_memleak_reply,2133 |
91 | msgdata,connectd_dev_memleak_reply,leak,bool, |
92 | # Ping/pong test. Waits for a reply if it expects one. |
93 | msgtype,connectd_ping,2030 |
94 | msgdata,connectd_ping,id,node_id, |
95 | msgdata,connectd_ping,num_pong_bytes,u16, |
96 | msgdata,connectd_ping,len,u16, |
97 | msgtype,connectd_ping_reply,2130 |
98 | # False if we there was already a ping in progress. |
99 | msgdata,connectd_ping_reply,sent,bool, |
100 | # 0 == no pong expected, otherwise length of pong. |
101 | msgdata,connectd_ping_reply,totlen,u16, |
102 | # We tell lightningd we got an onionmsg |
103 | msgtype,connectd_got_onionmsg_to_us,2145 |
104 | msgdata,connectd_got_onionmsg_to_us,obs2,bool, |
105 | msgdata,connectd_got_onionmsg_to_us,node_alias,pubkey, |
106 | msgdata,connectd_got_onionmsg_to_us,self_id,?secret, |
107 | msgdata,connectd_got_onionmsg_to_us,reply_blinding,?pubkey, |
108 | msgdata,connectd_got_onionmsg_to_us,reply_first_node,?pubkey, |
109 | msgdata,connectd_got_onionmsg_to_us,reply_path_len,u16, |
110 | msgdata,connectd_got_onionmsg_to_us,reply_path,onionmsg_path,reply_path_len |
111 | msgdata,connectd_got_onionmsg_to_us,rawmsg_len,u16, |
112 | msgdata,connectd_got_onionmsg_to_us,rawmsg,u8,rawmsg_len |
113 | # Lightningd tells us to send an onion message. |
114 | msgtype,connectd_send_onionmsg,2041 |
115 | msgdata,connectd_send_onionmsg,obs2,bool, |
116 | msgdata,connectd_send_onionmsg,id,node_id, |
117 | msgdata,connectd_send_onionmsg,onion_len,u16, |
118 | msgdata,connectd_send_onionmsg,onion,u8,onion_len |
119 | msgdata,connectd_send_onionmsg,blinding,pubkey, |
120 | # A custom message that we got from a peer and don't know how to handle, so we |
121 | # forward it to the master for further handling. |
122 | msgtype,connectd_custommsg_in,2110 |
123 | msgdata,connectd_custommsg_in,id,node_id, |
124 | msgdata,connectd_custommsg_in,msg_len,u16, |
125 | msgdata,connectd_custommsg_in,msg,u8,msg_len |
126 | # A custom message that the lightningd tells us to send to the peer. |
127 | msgtype,connectd_custommsg_out,2011 |
128 | msgdata,connectd_custommsg_out,id,node_id, |
129 | msgdata,connectd_custommsg_out,msg_len,u16, |
130 | msgdata,connectd_custommsg_out,msg,u8,msg_len |
131 | # master -> connect: stop sending gossip. |
132 | msgtype,connectd_dev_suppress_gossip,2032 |