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

Function process_scid_probe

gossipd/seeker.c:708–764  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

706}
707
708static void process_scid_probe(struct peer *peer,
709 u32 first_blocknum, u32 number_of_blocks,
710 const struct range_query_reply *replies)
711{
712 struct daemon *daemon = peer->daemon;
713 struct seeker *seeker = daemon->seeker;
714 bool new_unknown_scids = false;
715 struct gossmap *gossmap;
716
717 /* We might have given up on them, then they replied. */
718 if (seeker->random_peer != peer)
719 return;
720
721 seeker->random_peer = NULL;
722 gossmap = gossmap_manage_get_gossmap(daemon->gm);
723
724 for (size_t i = 0; i < tal_count(replies); i++) {
725 struct gossmap_chan *c = gossmap_find_chan(gossmap,
726 &replies[i].scid);
727 if (c) {
728 check_timestamps(seeker, gossmap, c, &replies[i].ts, peer);
729 continue;
730 }
731
732 new_unknown_scids |= add_unknown_scid(seeker,
733 replies[i].scid,
734 peer);
735 }
736
737 /* No new unknown scids, or no more to ask? We give some wiggle
738 * room in case blocks came in since we started. */
739 if (new_unknown_scids
740 && next_block_range(seeker, number_of_blocks,
741 &first_blocknum, &number_of_blocks)) {
742 /* This must return a peer, since we have the current peer! */
743 peer = random_seeker(seeker, peer_can_take_range_query);
744 assert(peer);
745 selected_peer(seeker, peer);
746
747 query_channel_range(seeker->daemon, peer,
748 first_blocknum, number_of_blocks,
749 QUERY_ADD_TIMESTAMPS,
750 process_scid_probe);
751 return;
752 }
753
754 /* Channel probe finished, try asking for 128 unannounced nodes. */
755 if (!get_unannounced_nodes(seeker, seeker->daemon, 128,
756 &seeker->nannounce_scids,
757 &seeker->nannounce_query_flags)) {
758 /* No unknown nodes. Great! */
759 set_state(seeker, NORMAL, NULL, "No unannounced nodes");
760 return;
761 }
762
763 peer_gossip_probe_nannounces(seeker);
764}
765

Callers

nothing calls this directly

Calls 10

gossmap_find_chanFunction · 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