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

Function process_scid_probe

gossipd/seeker.c:630–682  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

628}
629
630static void process_scid_probe(struct peer *peer,
631 u32 first_blocknum, u32 number_of_blocks,
632 const struct range_query_reply *replies)
633{
634 struct seeker *seeker = peer->daemon->seeker;
635 bool new_unknown_scids = false;
636
637 /* We might have given up on them, then they replied. */
638 if (seeker->random_peer_softref != peer)
639 return;
640
641 clear_softref(seeker, &seeker->random_peer_softref);
642
643 for (size_t i = 0; i < tal_count(replies); i++) {
644 struct chan *c = get_channel(seeker->daemon->rstate,
645 &replies[i].scid);
646 if (c) {
647 check_timestamps(seeker, c, &replies[i].ts, peer);
648 continue;
649 }
650
651 new_unknown_scids |= add_unknown_scid(seeker, &replies[i].scid,
652 peer);
653 }
654
655 /* No new unknown scids, or no more to ask? We give some wiggle
656 * room in case blocks came in since we started. */
657 if (new_unknown_scids
658 && next_block_range(seeker, number_of_blocks,
659 &first_blocknum, &number_of_blocks)) {
660 /* This must return a peer, since we have the current peer! */
661 peer = random_seeker(seeker, peer_can_take_range_query);
662 assert(peer);
663 selected_peer(seeker, peer);
664
665 query_channel_range(seeker->daemon, peer,
666 first_blocknum, number_of_blocks,
667 QUERY_ADD_TIMESTAMPS,
668 process_scid_probe);
669 return;
670 }
671
672 /* Channel probe finished, try asking for 128 unannounced nodes. */
673 if (!get_unannounced_nodes(seeker, seeker->daemon->rstate, 128,
674 &seeker->nannounce_scids,
675 &seeker->nannounce_query_flags)) {
676 /* No unknown nodes. Great! */
677 set_state(seeker, NORMAL, NULL, "No unannounced nodes");
678 return;
679 }
680
681 peer_gossip_probe_nannounces(seeker);
682}
683
684/* Pick a peer, ask it for a few scids, to check. */
685static void peer_gossip_probe_scids(struct seeker *seeker)

Callers

nothing calls this directly

Calls 9

get_channelFunction · 0.85
check_timestampsFunction · 0.85
add_unknown_scidFunction · 0.85
next_block_rangeFunction · 0.85
random_seekerFunction · 0.85
selected_peerFunction · 0.85
get_unannounced_nodesFunction · 0.85
query_channel_rangeFunction · 0.70

Tested by

no test coverage detected