RPS sampler: An id might be removed while a request is still pending
authorJulius Bünger <buenger@mytum.de>
Mon, 25 Feb 2019 19:36:44 +0000 (20:36 +0100)
committerJulius Bünger <buenger@mytum.de>
Mon, 25 Feb 2019 19:36:44 +0000 (20:36 +0100)
src/rps/gnunet-service-rps.c
src/rps/gnunet-service-rps_sampler.h
src/rps/rps-sampler_common.c

index a185645ef54fdaba6223ba9f7a026535ebe19f9c..098c71f93188e6c90283315fd150779ab1b09fce 100644 (file)
@@ -2389,6 +2389,12 @@ hist_update (const struct GNUNET_PeerIdentity *ids,
   for (i = 0; i < num_peers; i++)
   {
     int inserted;
+    if (GNUNET_YES != check_peer_known (sub->peer_map, &ids[i]))
+    {
+      LOG (GNUNET_ERROR_TYPE_WARNING,
+           "Peer in history update not known!\n");
+      continue;
+    }
     inserted = insert_in_view (sub, &ids[i]);
     if (GNUNET_OK == inserted)
     {
@@ -4369,7 +4375,6 @@ do_round (void *cls)
     }
   }
   // TODO independent of that also get some peers from CADET_get_peers()?
-  // TODO log/stat expected pushes/difference to received pushes
   if (CustomPeerMap_size (sub->push_map) < HISTOGRAM_FILE_SLOTS)
   {
     sub->push_recv[CustomPeerMap_size (sub->push_map)]++;
index 9f60aa7c9cac610924d1773a341071f7d3726331..921570f7da497ad035cc2a0d3b211d124f1a4979 100644 (file)
@@ -90,6 +90,12 @@ RPS_sampler_update (struct RPS_Sampler *sampler,
  *
  * Used to get rid of a PeerID.
  *
+ * FIXME: This should also consider currently pending requests
+ *        (Pending requests already collect peerids. As long as not all
+ *        requested IDs have been collected, they are kept.
+ *        Ideally, the @p id should be removed from all pending requests. This
+ *        seems quite complicated.)
+ *
  * @param sampler the sampler to reinitialise a sampler in.
  * @param id the id of the samplers to update.
  */
index e34cdd67bcbb35870d8010103a14bf9a8a9c9aca..2b0569c614130ffc0d330ba16c6e14c8994502f2 100644 (file)
@@ -215,6 +215,12 @@ RPS_sampler_update (struct RPS_Sampler *sampler,
  *
  * Used to get rid of a PeerID.
  *
+ * FIXME: This should also consider currently pending requests
+ *        (Pending requests already collect peerids. As long as not all
+ *        requested IDs have been collected, they are kept.
+ *        Ideally, the @p id should be removed from all pending requests. This
+ *        seems quite complicated.)
+ *
  * @param sampler the sampler to reinitialise a sampler element in.
  * @param id the id of the sampler elements to update.
  */