- attempt_connect (peer, NULL);
-}
-
-
-/**
- * Try to add more friends to our connection set.
- */
-static void
-try_add_friends ()
-{
- struct PeerList *pos;
-
- pos = friends;
- while (pos != NULL)
- {
- if ( (GNUNET_TIME_absolute_get_remaining (pos->blacklisted_until).value == 0) &&
- (GNUNET_YES == pos->is_friend) &&
- (GNUNET_YES != pos->is_connected) )
- attempt_connect (&pos->id, pos);
- pos = pos->next;
- }
-}
-
-
-/**
- * Discard peer entries for blacklisted peers
- * where the blacklisting has expired.
- */
-static void
-discard_old_blacklist_entries ()
-{
- struct PeerList *pos;
- struct PeerList *next;
- struct PeerList *prev;
-
- next = friends;
- prev = NULL;
- while (NULL != (pos = next))
- {
- next = pos->next;
- if ( (GNUNET_NO == pos->is_friend) &&
- (GNUNET_NO == pos->is_connected) &&
- (0 == GNUNET_TIME_absolute_get_remaining (pos->blacklisted_until).value) )
- {
- /* delete 'pos' from list */
- if (prev == NULL)
- friends = next;
- else
- prev->next = next;
- GNUNET_free (pos);
- }
- else
- {
- prev = pos;
- }
- }
-}
-
-
-/**
- * Find more peers that we should connect to and ask the
- * core to establish connections.
- */
-static void
-find_more_peers (void *cls,
- const struct GNUNET_SCHEDULER_TaskContext *tc)
-{
- discard_old_blacklist_entries ();
- if (target_connection_count <= connection_count)
- {
- schedule_peer_search ();
- return;
- }
- if ( (GNUNET_YES == friends_only) ||
- (friend_count < minimum_friend_count) )
- {
- try_add_friends ();
- schedule_peer_search ();
- return;
- }
- GNUNET_PEERINFO_for_all (cfg,
- sched,
- NULL,
- 0, GNUNET_TIME_UNIT_FOREVER_REL,
- &process_peer, NULL);
+ }
+ if (GNUNET_TIME_absolute_get_remaining (pos->greylisted_until).rel_value > 0)
+ {
+#if DEBUG_TOPOLOGY
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Already tried peer `%s' recently\n",
+ GNUNET_i2s (peer));
+#endif
+ return; /* peer still greylisted */
+ }
+#if DEBUG_TOPOLOGY
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Considering connecting to peer `%s'\n",
+ GNUNET_i2s (peer));
+#endif
+ attempt_connect (pos);