MCPcopy Create free account
hub / github.com/ElementsProject/lightning / disconnect_peer

Function disconnect_peer

connectd/multiplex.c:132–161  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

130}
131
132void disconnect_peer(struct peer *peer)
133{
134 peer->draining_state = READING_FROM_SUBDS;
135
136 for (size_t i = 0; i < tal_count(peer->subds); i++) {
137 /* Start timer in case it doesn't close by itself */
138 if (peer->subds[i]->conn) {
139 status_peer_debug(&peer->id, "disconnect_peer: setting 5 second timer for subd %zu/%zu.",
140 i, tal_count(peer->subds));
141 notleak(new_reltimer(&peer->daemon->timers, peer->subds[i],
142 time_from_sec(5),
143 close_subd_timeout, peer->subds[i]));
144 } else {
145 /* We told lightningd that peer spoke, but it hasn't returned yet. */
146 tal_arr_remove(&peer->subds, i);
147 i--;
148 }
149 }
150
151 if (tal_count(peer->subds) != 0) {
152 status_peer_debug(&peer->id, "disconnect_peer: waking %zu subds.",
153 tal_count(peer->subds));
154 /* Wake them up so we read again */
155 io_wake(&peer->subds);
156 } else {
157 status_peer_debug(&peer->id, "disconnect_peer: no subds, draining now.");
158 /* No subds left, start draining peer */
159 drain_peer(peer);
160 }
161}
162
163static void free_all_subds(struct peer *peer)
164{

Callers 2

send_warningFunction · 0.85
peer_disconnectFunction · 0.85

Calls 3

time_from_secFunction · 0.85
io_wakeFunction · 0.85
drain_peerFunction · 0.85

Tested by

no test coverage detected