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

Function new_peer

connectd/connectd.c:113–167  ·  view source on GitHub ↗

~ This is where we create a new peer. */

Source from the content-addressed store, hash-verified

111
112/*~ This is where we create a new peer. */
113static struct peer *new_peer(struct daemon *daemon,
114 const struct node_id *id,
115 const struct crypto_state *cs,
116 const u8 *their_features TAKES,
117 enum is_websocket is_websocket,
118 struct timemono connect_starttime,
119 struct io_conn *conn STEALS,
120 int *fd_for_subd)
121{
122 struct peer *peer = tal(daemon, struct peer);
123
124 peer->daemon = daemon;
125 peer->id = *id;
126 peer->connect_starttime = connect_starttime;
127 peer->counter = daemon->connection_counter++;
128 peer->cs = *cs;
129 peer->subds = tal_arr(peer, struct subd *, 0);
130 peer->peer_in = NULL;
131 peer->bytes_rcvd_this_second = 0;
132 peer->bytes_rcvd_start_time = time_mono();
133 peer->recv_timer = NULL;
134 peer->throttle_warned = false;
135 membuf_init(&peer->encrypted_peer_out,
136 tal_arr(peer, u8, 0), 0,
137 membuf_tal_resize);
138 peer->encrypted_peer_out_sent = 0;
139 peer->nonurgent_flush_timer = NULL;
140 peer->peer_out_urgent = 0;
141 peer->flushing_nonurgent = false;
142 peer->draining_state = NOT_DRAINING;
143 peer->peer_in_lastmsg = -1;
144 peer->peer_outq = msg_queue_new(peer, false);
145 peer->last_recv_time = time_mono();
146 peer->is_websocket = is_websocket;
147 peer->dev_writes_enabled = NULL;
148 peer->dev_read_enabled = true;
149 peer->scid_queries = NULL;
150 peer->scid_query_flags = NULL;
151 peer->scid_query_idx = 0;
152 peer->scid_query_nodes = NULL;
153 peer->scid_query_nodes_idx = 0;
154 peer->onionmsg_incoming_tokens = ONION_MSG_TOKENS_MAX;
155 peer->onionmsg_last_incoming = time_mono();
156 peer->onionmsg_limit_warned = false;
157 peer->their_features = tal_dup_talarr(peer, u8, their_features);
158
159 peer->to_peer = conn;
160
161 /* Now we own it */
162 tal_steal(peer, peer->to_peer);
163 peer_htable_add(daemon->peers, peer);
164 tal_add_destructor(peer, destroy_peer);
165
166 return peer;
167}
168
169/*~ Helper to append a wireaddr to an array if wireaddr_internal */
170static void append_addr(struct wireaddr_internal **wireaddrs,

Callers 1

peer_connectedFunction · 0.70

Calls 2

time_monoFunction · 0.85
msg_queue_newFunction · 0.85

Tested by

no test coverage detected