gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r16409 - gnunet/src/transport


From: gnunet
Subject: [GNUnet-SVN] r16409 - gnunet/src/transport
Date: Sat, 6 Aug 2011 18:48:46 +0200

Author: grothoff
Date: 2011-08-06 18:48:46 +0200 (Sat, 06 Aug 2011)
New Revision: 16409

Modified:
   gnunet/src/transport/gnunet-service-transport_validation.c
Log:
remember notifies

Modified: gnunet/src/transport/gnunet-service-transport_validation.c
===================================================================
--- gnunet/src/transport/gnunet-service-transport_validation.c  2011-08-06 
16:44:10 UTC (rev 16408)
+++ gnunet/src/transport/gnunet-service-transport_validation.c  2011-08-06 
16:48:46 UTC (rev 16409)
@@ -177,7 +177,12 @@
  */
 static struct GNUNET_CONTAINER_MultiHashMap *validation_map;
 
+/**
+ * Map of PeerIdentities to 'struct GST_ValidationIteratorContext's.
+ */
+static struct GNUNET_CONTAINER_MultiHashMap *notify_map;
 
+
 /**
  * Start the validation subsystem.
  */
@@ -185,6 +190,7 @@
 GST_validation_start ()
 {
   validation_map = GNUNET_CONTAINER_multihashmap_create (VALIDATION_MAP_SIZE);
+  notify_map = GNUNET_CONTAINER_multihashmap_create (VALIDATION_MAP_SIZE);
 }
 
 
@@ -227,6 +233,9 @@
                                         NULL);
   GNUNET_CONTAINER_multihashmap_destroy (validation_map);
   validation_map = NULL;
+  GNUNET_assert (GNUNET_CONTAINER_multihashmap_size (notify_map) == 0);
+  GNUNET_CONTAINER_multihashmap_destroy (notify_map);
+  notify_map = NULL;
   while (NULL != (chvc = chvc_head))
     {
       GNUNET_CONTAINER_DLL_remove (chvc_head,
@@ -482,6 +491,11 @@
    * Closure for 'cb'.
    */
   void *cb_cls;
+
+  /**
+   * Which peer are we monitoring?
+   */   
+  struct GNUNET_PeerIdentity target;
 };
 
 
@@ -535,6 +549,7 @@
   vic = GNUNET_malloc (sizeof (struct GST_ValidationIteratorContext));
   vic->cb = cb;
   vic->cb_cls = cb_cls;
+  vic->target = *target;
   GNUNET_CONTAINER_multihashmap_get_multiple (validation_map,
                                              &target->hashPubKey,
                                              &iterate_addresses,
@@ -544,7 +559,10 @@
       GNUNET_free (vic);
       return NULL;
     }
-  /* FIXME: install 'vic' somewhere */
+  GNUNET_CONTAINER_multihashmap_put (notify_map,
+                                    &target->hashPubKey,
+                                    vic,
+                                    
GNUNET_CONTAINER_MULTIHASHMAPOPTION_MULTIPLE);
   return vic;
 }
 
@@ -557,7 +575,10 @@
 void
 GST_validation_get_addresses_cancel (struct GST_ValidationIteratorContext *ctx)
 {
-  /* FIXME: remove 'vic' from DS */
+  GNUNET_assert (GNUNET_OK ==
+                GNUNET_CONTAINER_multihashmap_remove (notify_map,
+                                                      &ctx->target.hashPubKey,
+                                                      ctx));
   GNUNET_free (ctx);
 }
 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]