mirror of
https://github.com/ElementsProject/lightning.git
synced 2024-12-27 09:04:40 +01:00
d31420211a
This allows us to detect when lightningd hasn't seen our latest disconnect/reconnect; in particular, we would hit the following pattern: 1. lightningd says to connect a subd. 2. connectd disconnects and reconnects. 3. connectd reads message, connects subd. 4. lightningd reads disconnect and reconnect, sends msg to connect to subd again. 5. connectd asserts because subd is alreacy connected. This way connectd can tell if lightningd is talking about the previous connection, and ignoere it. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
6.0 KiB
6.0 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,seconds_waited,u32, |
46 | msgdata,connectd_connect_to_peer,len,u32, |
47 | msgdata,connectd_connect_to_peer,addrs,wireaddr,len |
48 | msgdata,connectd_connect_to_peer,addrhint,?wireaddr_internal, |
49 | # Connectd->master: connect failed. |
50 | msgtype,connectd_connect_failed,2020 |
51 | msgdata,connectd_connect_failed,id,node_id, |
52 | msgdata,connectd_connect_failed,failcode,errcode_t, |
53 | msgdata,connectd_connect_failed,failreason,wirestring, |
54 | msgdata,connectd_connect_failed,seconds_to_delay,u32, |
55 | msgdata,connectd_connect_failed,addrhint,?wireaddr_internal, |
56 | # Connectd -> master: we got a peer. |
57 | msgtype,connectd_peer_connected,2002 |
58 | msgdata,connectd_peer_connected,id,node_id, |
59 | msgdata,connectd_peer_connected,counter,u64, |
60 | msgdata,connectd_peer_connected,addr,wireaddr_internal, |
61 | msgdata,connectd_peer_connected,remote_addr,?wireaddr, |
62 | msgdata,connectd_peer_connected,incoming,bool, |
63 | msgdata,connectd_peer_connected,flen,u16, |
64 | msgdata,connectd_peer_connected,features,u8,flen |
65 | # connectd -> master: peer disconnected. |
66 | msgtype,connectd_peer_disconnect_done,2006 |
67 | msgdata,connectd_peer_disconnect_done,id,node_id, |
68 | msgdata,connectd_peer_disconnect_done,counter,u64, |
69 | # Master -> connectd: make peer active immediately (we want to talk) (+ fd to subd). |
70 | msgtype,connectd_peer_connect_subd,2004 |
71 | msgdata,connectd_peer_connect_subd,id,node_id, |
72 | msgdata,connectd_peer_connect_subd,counter,u64, |
73 | msgdata,connectd_peer_connect_subd,channel_id,channel_id, |
74 | # Connectd -> master: peer said something interesting |
75 | msgtype,connectd_peer_spoke,2005 |
76 | msgdata,connectd_peer_spoke,id,node_id, |
77 | msgdata,connectd_peer_spoke,counter,u64, |
78 | msgdata,connectd_peer_spoke,msgtype,u16, |
79 | msgdata,connectd_peer_spoke,channel_id,channel_id, |
80 | # master -> connectd: peer no longer wanted, you can disconnect. |
81 | msgtype,connectd_discard_peer,2015 |
82 | msgdata,connectd_discard_peer,id,node_id, |
83 | msgdata,connectd_discard_peer,counter,u64, |
84 | # master -> connectd: give message to peer and disconnect. |
85 | msgtype,connectd_peer_final_msg,2003 |
86 | msgdata,connectd_peer_final_msg,id,node_id, |
87 | msgdata,connectd_peer_final_msg,counter,u64, |
88 | msgdata,connectd_peer_final_msg,len,u16, |
89 | msgdata,connectd_peer_final_msg,msg,u8,len |
90 | # master -> connectd: do you have a memleak? |
91 | msgtype,connectd_dev_memleak,2033 |
92 | msgtype,connectd_dev_memleak_reply,2133 |
93 | msgdata,connectd_dev_memleak_reply,leak,bool, |
94 | # Ping/pong test. Waits for a reply if it expects one. |
95 | msgtype,connectd_ping,2030 |
96 | msgdata,connectd_ping,id,node_id, |
97 | msgdata,connectd_ping,num_pong_bytes,u16, |
98 | msgdata,connectd_ping,len,u16, |
99 | msgtype,connectd_ping_reply,2130 |
100 | # False if we there was already a ping in progress. |
101 | msgdata,connectd_ping_reply,sent,bool, |
102 | # 0 == no pong expected, otherwise length of pong. |
103 | msgdata,connectd_ping_reply,totlen,u16, |
104 | # We tell lightningd we got an onionmsg |
105 | msgtype,connectd_got_onionmsg_to_us,2145 |
106 | msgdata,connectd_got_onionmsg_to_us,obs2,bool, |
107 | msgdata,connectd_got_onionmsg_to_us,node_alias,pubkey, |
108 | msgdata,connectd_got_onionmsg_to_us,self_id,?secret, |
109 | msgdata,connectd_got_onionmsg_to_us,reply_blinding,?pubkey, |
110 | msgdata,connectd_got_onionmsg_to_us,reply_first_node,?pubkey, |
111 | msgdata,connectd_got_onionmsg_to_us,reply_path_len,u16, |
112 | msgdata,connectd_got_onionmsg_to_us,reply_path,onionmsg_path,reply_path_len |
113 | msgdata,connectd_got_onionmsg_to_us,rawmsg_len,u16, |
114 | msgdata,connectd_got_onionmsg_to_us,rawmsg,u8,rawmsg_len |
115 | # Lightningd tells us to send an onion message. |
116 | msgtype,connectd_send_onionmsg,2041 |
117 | msgdata,connectd_send_onionmsg,obs2,bool, |
118 | msgdata,connectd_send_onionmsg,id,node_id, |
119 | msgdata,connectd_send_onionmsg,onion_len,u16, |
120 | msgdata,connectd_send_onionmsg,onion,u8,onion_len |
121 | msgdata,connectd_send_onionmsg,blinding,pubkey, |
122 | # A custom message that we got from a peer and don't know how to handle, so we |
123 | # forward it to the master for further handling. |
124 | msgtype,connectd_custommsg_in,2110 |
125 | msgdata,connectd_custommsg_in,id,node_id, |
126 | msgdata,connectd_custommsg_in,msg_len,u16, |
127 | msgdata,connectd_custommsg_in,msg,u8,msg_len |
128 | # A custom message that the lightningd tells us to send to the peer. |
129 | msgtype,connectd_custommsg_out,2011 |
130 | msgdata,connectd_custommsg_out,id,node_id, |
131 | msgdata,connectd_custommsg_out,msg_len,u16, |
132 | msgdata,connectd_custommsg_out,msg,u8,msg_len |
133 | # master -> connect: stop sending gossip. |
134 | msgtype,connectd_dev_suppress_gossip,2032 |