aboutsummaryrefslogtreecommitdiff
path: root/src/rps
diff options
context:
space:
mode:
authorJulius Bünger <buenger@mytum.de>2016-05-22 07:12:53 +0000
committerJulius Bünger <buenger@mytum.de>2016-05-22 07:12:53 +0000
commit9ad5633ecfb63dd275a0f2d23493b72697f7b7de (patch)
tree008767c0f354026e68ebe16c23f46700ea1273f5 /src/rps
parent06cf11d893b2db5ea332c3a7bf9c01f97e278d7c (diff)
downloadgnunet-9ad5633ecfb63dd275a0f2d23493b72697f7b7de.tar.gz
gnunet-9ad5633ecfb63dd275a0f2d23493b72697f7b7de.zip
-rps: only insert online peers in the view
Diffstat (limited to 'src/rps')
-rw-r--r--src/rps/gnunet-service-rps.c53
1 files changed, 45 insertions, 8 deletions
diff --git a/src/rps/gnunet-service-rps.c b/src/rps/gnunet-service-rps.c
index b9e472fda..cec0719fd 100644
--- a/src/rps/gnunet-service-rps.c
+++ b/src/rps/gnunet-service-rps.c
@@ -437,6 +437,43 @@ T_relative_avg (const struct GNUNET_TIME_Relative *rel_array,
437 437
438 438
439/** 439/**
440 * Insert PeerID in #view
441 *
442 * Called once we know a peer is live.
443 * Implements #PeerOp
444 *
445 * @return GNUNET_OK if peer was actually inserted
446 * GNUNET_NO if peer was not inserted
447 */
448static void
449insert_in_view_op (void *cls,
450 const struct GNUNET_PeerIdentity *peer);
451
452/**
453 * Insert PeerID in #view
454 *
455 * Called once we know a peer is live.
456 *
457 * @return GNUNET_OK if peer was actually inserted
458 * GNUNET_NO if peer was not inserted
459 */
460static int
461insert_in_view (const struct GNUNET_PeerIdentity *peer)
462{
463 int online;
464
465 online = Peers_check_peer_flag (peer, Peers_ONLINE);
466 if ( (GNUNET_NO == online) ||
467 (GNUNET_SYSERR == online) ) /* peer is not even known */
468 {
469 (void) Peers_check_peer_live (peer);
470 (void) Peers_schedule_operation (peer, insert_in_view_op);
471 return GNUNET_NO;
472 }
473 return View_put (peer);
474}
475
476/**
440 * Put random peer from sampler into the view as history update. 477 * Put random peer from sampler into the view as history update.
441 */ 478 */
442static void 479static void
@@ -448,7 +485,7 @@ hist_update (void *cls,
448 485
449 for (i = 0; i < num_peers; i++) 486 for (i = 0; i < num_peers; i++)
450 { 487 {
451 View_put (&ids[i]); 488 (void) insert_in_view (&ids[i]);
452 to_file (file_name_view_log, 489 to_file (file_name_view_log,
453 "+%s\t(hist)", 490 "+%s\t(hist)",
454 GNUNET_i2s_full (ids)); 491 GNUNET_i2s_full (ids));
@@ -642,11 +679,10 @@ insert_in_pull_map (void *cls,
642 * Implements #PeerOp 679 * Implements #PeerOp
643 */ 680 */
644static void 681static void
645insert_in_view (void *cls, 682insert_in_view_op (void *cls,
646 const struct GNUNET_PeerIdentity *peer) 683 const struct GNUNET_PeerIdentity *peer)
647{ 684{
648 GNUNET_assert (GNUNET_YES == Peers_check_peer_flag (peer, Peers_ONLINE)); 685 (void) insert_in_view (peer);
649 View_put (peer);
650} 686}
651 687
652 688
@@ -687,7 +723,7 @@ got_peer (const struct GNUNET_PeerIdentity *peer)
687 if (GNUNET_YES == Peers_check_peer_live (peer)) 723 if (GNUNET_YES == Peers_check_peer_live (peer))
688 { 724 {
689 Peers_schedule_operation (peer, insert_in_sampler); 725 Peers_schedule_operation (peer, insert_in_sampler);
690 Peers_schedule_operation (peer, insert_in_view); 726 Peers_schedule_operation (peer, insert_in_view_op);
691 } 727 }
692} 728}
693 729
@@ -1883,7 +1919,8 @@ do_round (void *cls)
1883 CustomPeerMap_size (push_map)); 1919 CustomPeerMap_size (push_map));
1884 for (i = 0; i < first_border; i++) 1920 for (i = 0; i < first_border; i++)
1885 { 1921 {
1886 View_put (CustomPeerMap_get_peer_by_index (push_map, permut[i])); 1922 (void) insert_in_view (CustomPeerMap_get_peer_by_index (push_map,
1923 permut[i]));
1887 to_file (file_name_view_log, 1924 to_file (file_name_view_log,
1888 "+%s\t(push list)", 1925 "+%s\t(push list)",
1889 GNUNET_i2s_full (&view_array[i])); 1926 GNUNET_i2s_full (&view_array[i]));
@@ -1897,8 +1934,8 @@ do_round (void *cls)
1897 CustomPeerMap_size (pull_map)); 1934 CustomPeerMap_size (pull_map));
1898 for (i = first_border; i < second_border; i++) 1935 for (i = first_border; i < second_border; i++)
1899 { 1936 {
1900 View_put (CustomPeerMap_get_peer_by_index (pull_map, 1937 (void) insert_in_view (CustomPeerMap_get_peer_by_index (pull_map,
1901 permut[i - first_border])); 1938 permut[i - first_border]));
1902 to_file (file_name_view_log, 1939 to_file (file_name_view_log,
1903 "+%s\t(pull list)", 1940 "+%s\t(pull list)",
1904 GNUNET_i2s_full (&view_array[i])); 1941 GNUNET_i2s_full (&view_array[i]));