gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] r11848 - gnunet/src/dv


From: gnunet
Subject: [GNUnet-SVN] r11848 - gnunet/src/dv
Date: Mon, 21 Jun 2010 18:21:19 +0200

Author: nevans
Date: 2010-06-21 18:21:19 +0200 (Mon, 21 Jun 2010)
New Revision: 11848

Modified:
   gnunet/src/dv/dv_api.c
   gnunet/src/dv/gnunet-service-dv.c
   gnunet/src/dv/plugin_transport_dv.c
Log:
codesonar fixes, some other changes

Modified: gnunet/src/dv/dv_api.c
===================================================================
--- gnunet/src/dv/dv_api.c      2010-06-21 14:30:08 UTC (rev 11847)
+++ gnunet/src/dv/dv_api.c      2010-06-21 16:21:19 UTC (rev 11848)
@@ -200,6 +200,7 @@
   handle->current = NULL;
   process_pending_message (handle);
 
+  GNUNET_free(pos->msg);
   GNUNET_free (pos);
 }
 
@@ -312,12 +313,10 @@
           last = pos;
           pos = pos->next;
         }
-      new_message->next = last->next; /* Should always be null */
       last->next = new_message;
     }
   else
     {
-      new_message->next = handle->pending_list; /* Will always be null */
       handle->pending_list = new_message;
     }
 
@@ -445,14 +444,16 @@
   struct SendCallbackContext *send_ctx;
   char *end_of_message;
   GNUNET_HashCode uidhash;
+  int msize;
 #if DEBUG_DV_MESSAGES
   dv_handle->uid_gen = GNUNET_CRYPTO_random_u32 (GNUNET_CRYPTO_QUALITY_STRONG, 
UINT32_MAX);
 #else
   dv_handle->uid_gen++;
 #endif
 
-  msg = GNUNET_malloc(sizeof(struct GNUNET_DV_SendMessage) + addrlen + 
msgbuf_size);
-  msg->header.size = htons(sizeof(struct GNUNET_DV_SendMessage) + addrlen + 
msgbuf_size);
+  msize = sizeof(struct GNUNET_DV_SendMessage) + addrlen + msgbuf_size;
+  msg = GNUNET_malloc(msize);
+  msg->header.size = htons(msize);
   msg->header.type = htons(GNUNET_MESSAGE_TYPE_TRANSPORT_DV_SEND);
   memcpy(&msg->target, target, sizeof(struct GNUNET_PeerIdentity));
   msg->msgbuf_size = htonl(msgbuf_size);
@@ -497,6 +498,8 @@
   if (size >= tsize)
   {
     memcpy(buf, start_context->message, tsize);
+    GNUNET_free(start_context->message);
+    GNUNET_free(start_context);
     return tsize;
   }
 

Modified: gnunet/src/dv/gnunet-service-dv.c
===================================================================
--- gnunet/src/dv/gnunet-service-dv.c   2010-06-21 14:30:08 UTC (rev 11847)
+++ gnunet/src/dv/gnunet-service-dv.c   2010-06-21 16:21:19 UTC (rev 11848)
@@ -49,7 +49,7 @@
  * For testing mostly, remember only the
  * shortest path to a distant neighbor.
  */
-#define AT_MOST_ONE GNUNET_YES
+#define AT_MOST_ONE GNUNET_NO
 
 #define USE_PEER_ID GNUNET_YES
 
@@ -146,23 +146,12 @@
 /**
  * Task to run when we shut down, cleaning up all our trash
  */
-GNUNET_SCHEDULER_TaskIdentifier cleanup_task;
+static GNUNET_SCHEDULER_TaskIdentifier cleanup_task;
 
-/**
- * Task to run to gossip about peers.  Will reschedule itself forever until 
shutdown!
- */
-GNUNET_SCHEDULER_TaskIdentifier gossip_task;
-
-/**
- * Struct where neighbor information is stored.
- */
-struct DistantNeighbor *referees;
-
 static size_t default_dv_priority = 0;
 
-char *my_short_id;
+static char *my_short_id;
 
-
 /**
  * Linked list of messages to send to clients.
  */
@@ -213,37 +202,37 @@
 /**
  * Transmit handle to the plugin.
  */
-struct GNUNET_CONNECTION_TransmitHandle * plugin_transmit_handle;
+static struct GNUNET_CONNECTION_TransmitHandle * plugin_transmit_handle;
 
 /**
  * Head of DLL for client messages
  */
-struct PendingMessage *plugin_pending_head;
+static struct PendingMessage *plugin_pending_head;
 
 /**
  * Tail of DLL for client messages
  */
-struct PendingMessage *plugin_pending_tail;
+static struct PendingMessage *plugin_pending_tail;
 
 /**
  * Handle to the peerinfo service
  */
-struct GNUNET_PEERINFO_Handle *peerinfo_handle;
+static struct GNUNET_PEERINFO_Handle *peerinfo_handle;
 
 /**
  * Transmit handle to core service.
  */
-struct GNUNET_CORE_TransmitHandle * core_transmit_handle;
+static struct GNUNET_CORE_TransmitHandle * core_transmit_handle;
 
 /**
  * Head of DLL for core messages
  */
-struct PendingMessage *core_pending_head;
+static struct PendingMessage *core_pending_head;
 
 /**
  * Tail of DLL for core messages
  */
-struct PendingMessage *core_pending_tail;
+static struct PendingMessage *core_pending_tail;
 
 
 struct FastGossipNeighborList
@@ -530,50 +519,39 @@
 #endif
 };
 
+
 /**
- * Global construct
+ * Map of PeerIdentifiers to 'struct GNUNET_dv_neighbor*'s for all
+ * directly connected peers.
  */
-struct GNUNET_DV_Context
-{
-  /**
-   * Map of PeerIdentifiers to 'struct GNUNET_dv_neighbor*'s for all
-   * directly connected peers.
-   */
-  struct GNUNET_CONTAINER_MultiHashMap *direct_neighbors;
+static struct GNUNET_CONTAINER_MultiHashMap *direct_neighbors;
 
-  /**
-   * Map of PeerIdentifiers to 'struct GNUNET_dv_neighbor*'s for
-   * peers connected via DV (extended neighborhood).  Does ALSO
-   * include any peers that are in 'direct_neighbors'; for those
-   * peers, the cost will be zero and the referrer all zeros.
-   */
-  struct GNUNET_CONTAINER_MultiHashMap *extended_neighbors;
+/**
+ * Map of PeerIdentifiers to 'struct GNUNET_dv_neighbor*'s for
+ * peers connected via DV (extended neighborhood).  Does ALSO
+ * include any peers that are in 'direct_neighbors'; for those
+ * peers, the cost will be zero and the referrer all zeros.
+ */
+static struct GNUNET_CONTAINER_MultiHashMap *extended_neighbors;
 
-  /**
-   * We use the min heap (min refers to cost) to prefer
-   * gossipping about peers with small costs.
-   */
-  struct GNUNET_CONTAINER_Heap *neighbor_min_heap;
+/**
+ * We use the min heap (min refers to cost) to prefer
+ * gossipping about peers with small costs.
+ */
+static struct GNUNET_CONTAINER_Heap *neighbor_min_heap;
 
-  /**
-   * We use the max heap (max refers to cost) for general
-   * iterations over all peers and to remove the most costly
-   * connection if we have too many.
-   */
-  struct GNUNET_CONTAINER_Heap *neighbor_max_heap;
+/**
+ * We use the max heap (max refers to cost) for general
+ * iterations over all peers and to remove the most costly
+ * connection if we have too many.
+ */
+static struct GNUNET_CONTAINER_Heap *neighbor_max_heap;
 
-  unsigned long long fisheye_depth;
+static unsigned long long fisheye_depth;
 
-  unsigned long long max_table_size;
+static unsigned long long max_table_size;
 
-  unsigned int neighbor_id_loc;
 
-  int closing;
-
-};
-
-static struct GNUNET_DV_Context ctx;
-
 struct FindDestinationContext
 {
   unsigned int tid;
@@ -917,10 +895,10 @@
   find_context.dest = send_context->distant_peer;
   find_context.via = recipient;
   find_context.tid = 0;
-  //specific_neighbor = 
GNUNET_CONTAINER_multihashmap_get(ctx.extended_neighbors, 
&send_context->distant_peer->hashPubKey);
+  //specific_neighbor = GNUNET_CONTAINER_multihashmap_get(extended_neighbors, 
&send_context->distant_peer->hashPubKey);
 
-  //GNUNET_CONTAINER_multihashmap_iterate(ctx.extended_neighbors, 
&find_specific_id, &find_context);
-  GNUNET_CONTAINER_multihashmap_get_multiple (ctx.extended_neighbors, 
&send_context->distant_peer->hashPubKey,
+  //GNUNET_CONTAINER_multihashmap_iterate(extended_neighbors, 
&find_specific_id, &find_context);
+  GNUNET_CONTAINER_multihashmap_get_multiple (extended_neighbors, 
&send_context->distant_peer->hashPubKey,
                                               &find_specific_id, 
&find_context);
 
   if (find_context.tid == 0)
@@ -935,14 +913,14 @@
                         sender, sizeof (struct GNUNET_PeerIdentity))))
   {
     sender_id = 0;
-    source = GNUNET_CONTAINER_multihashmap_get (ctx.extended_neighbors,
+    source = GNUNET_CONTAINER_multihashmap_get (extended_neighbors,
                                                     &sender->hashPubKey);
     if (source != NULL)
       GNUNET_log(GNUNET_ERROR_TYPE_WARNING, "%s: send_message_via found %s, 
myself in extended peer list???\n", my_short_id, GNUNET_i2s(&source->identity));
   }
   else
   {
-    source = GNUNET_CONTAINER_multihashmap_get (ctx.extended_neighbors,
+    source = GNUNET_CONTAINER_multihashmap_get (extended_neighbors,
                                                 &sender->hashPubKey);
     if (source == NULL)
       {
@@ -1093,7 +1071,7 @@
    * in messages looping forever.  Relatively cheap, we don't iterate
    * over all known peers, just those that apply.
    */
-  GNUNET_CONTAINER_multihashmap_get_multiple (ctx.extended_neighbors,
+  GNUNET_CONTAINER_multihashmap_get_multiple (extended_neighbors,
                                                        &recipient->hashPubKey, 
 &find_least_cost_peer, &find_least_ctx);
   target = find_least_ctx.target;
 
@@ -1104,7 +1082,7 @@
     }
   recipient_id = target->referrer_id;
 
-  source = GNUNET_CONTAINER_multihashmap_get (ctx.extended_neighbors,
+  source = GNUNET_CONTAINER_multihashmap_get (extended_neighbors,
                                       &sender->hashPubKey);
   if (source == NULL)
     {
@@ -1129,7 +1107,7 @@
   encPeerFrom.encoding[4] = '\0';
   encPeerVia.encoding[4] = '\0';
 #endif
-  if (0 == memcmp(&source->identity, &target->referrer->identity, 
sizeof(struct GNUNET_PeerIdentity)))
+  if ((sender_id != 0) && (0 == memcmp(&source->identity, 
&target->referrer->identity, sizeof(struct GNUNET_PeerIdentity))))
     {
       return 0;
     }
@@ -1266,7 +1244,7 @@
       return GNUNET_SYSERR;
     }
 
-  dn = GNUNET_CONTAINER_multihashmap_get (ctx.direct_neighbors,
+  dn = GNUNET_CONTAINER_multihashmap_get (direct_neighbors,
                                   &peer->hashPubKey);
   if (dn == NULL)
     {
@@ -1282,12 +1260,12 @@
   {
     checkPeerCtx.sender_id = sid;
     checkPeerCtx.peer = NULL;
-    GNUNET_CONTAINER_multihashmap_iterate(ctx.extended_neighbors, 
&checkPeerID, &checkPeerCtx);
+    GNUNET_CONTAINER_multihashmap_iterate(extended_neighbors, &checkPeerID, 
&checkPeerCtx);
     pos = checkPeerCtx.peer;
   }
   else
   {
-    pos = GNUNET_CONTAINER_multihashmap_get (ctx.extended_neighbors,
+    pos = GNUNET_CONTAINER_multihashmap_get (extended_neighbors,
                                              &peer->hashPubKey);
   }
 #else
@@ -1361,7 +1339,7 @@
      issue) */
   fdc.tid = tid;
   fdc.dest = NULL;
-  GNUNET_CONTAINER_heap_iterate (ctx.neighbor_max_heap,
+  GNUNET_CONTAINER_heap_iterate (neighbor_max_heap,
                                  &find_destination, &fdc);
 
 #if DEBUG_DV
@@ -1514,7 +1492,7 @@
        *
        * NOTE: probably fixed once we decided send rate based on allowed 
bandwidth.
        */
-      about = GNUNET_CONTAINER_heap_walk_get_next (ctx.neighbor_min_heap);
+      about = GNUNET_CONTAINER_heap_walk_get_next (neighbor_min_heap);
     }
   to = send_context->toNeighbor;
 
@@ -1772,7 +1750,7 @@
 
   /* In bizarro world GNUNET_SYSERR indicates that we succeeded */
 #if UNSIMPLER
-  if (GNUNET_SYSERR != 
GNUNET_CONTAINER_multihashmap_get_multiple(ctx.extended_neighbors, 
&destination->hashPubKey, &send_iterator, send_context))
+  if (GNUNET_SYSERR != 
GNUNET_CONTAINER_multihashmap_get_multiple(extended_neighbors, 
&destination->hashPubKey, &send_iterator, send_context))
     {
       send_result_msg->result = htons(1);
       pending_message = GNUNET_malloc(sizeof(struct PendingMessage) + 
sizeof(struct GNUNET_DV_SendResultMessage));
@@ -1862,9 +1840,9 @@
       GNUNET_CONTAINER_DLL_remove (referrer->referee_head,
                          referrer->referee_tail, referee);
     }
-  GNUNET_CONTAINER_heap_remove_node (ctx.neighbor_max_heap, referee->max_loc);
-  GNUNET_CONTAINER_heap_remove_node (ctx.neighbor_min_heap, referee->min_loc);
-  GNUNET_CONTAINER_multihashmap_remove_all (ctx.extended_neighbors,
+  GNUNET_CONTAINER_heap_remove_node (neighbor_max_heap, referee->max_loc);
+  GNUNET_CONTAINER_heap_remove_node (neighbor_min_heap, referee->min_loc);
+  GNUNET_CONTAINER_multihashmap_remove_all (extended_neighbors,
                                     &referee->identity.hashPubKey);
   GNUNET_free_non_null (referee->pkey);
   GNUNET_free (referee);
@@ -1992,15 +1970,15 @@
 {
 #if DEBUG_DV
   GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "calling CORE_DISCONNECT\n");
-  GNUNET_CONTAINER_multihashmap_iterate(ctx.extended_neighbors, 
&print_neighbors, NULL);
+  GNUNET_CONTAINER_multihashmap_iterate(extended_neighbors, &print_neighbors, 
NULL);
 #endif
-  GNUNET_CONTAINER_multihashmap_iterate(ctx.extended_neighbors, 
&free_extended_neighbors, NULL);
-  GNUNET_CONTAINER_multihashmap_destroy(ctx.extended_neighbors);
-  GNUNET_CONTAINER_multihashmap_iterate(ctx.direct_neighbors, 
&free_direct_neighbors, NULL);
-  GNUNET_CONTAINER_multihashmap_destroy(ctx.direct_neighbors);
+  GNUNET_CONTAINER_multihashmap_iterate(extended_neighbors, 
&free_extended_neighbors, NULL);
+  GNUNET_CONTAINER_multihashmap_destroy(extended_neighbors);
+  GNUNET_CONTAINER_multihashmap_iterate(direct_neighbors, 
&free_direct_neighbors, NULL);
+  GNUNET_CONTAINER_multihashmap_destroy(direct_neighbors);
 
-  GNUNET_CONTAINER_heap_destroy(ctx.neighbor_max_heap);
-  GNUNET_CONTAINER_heap_destroy(ctx.neighbor_min_heap);
+  GNUNET_CONTAINER_heap_destroy(neighbor_max_heap);
+  GNUNET_CONTAINER_heap_destroy(neighbor_min_heap);
 
   GNUNET_CORE_disconnect (coreAPI);
   GNUNET_PEERINFO_disconnect(peerinfo_handle);
@@ -2084,9 +2062,9 @@
   if (update_info->referrer == distant_neighbor->referrer) /* Direct neighbor 
matches, update it's info and return GNUNET_NO */
   {
     /* same referrer, cost change! */
-    GNUNET_CONTAINER_heap_update_cost (ctx.neighbor_max_heap,
+    GNUNET_CONTAINER_heap_update_cost (neighbor_max_heap,
                                        update_info->neighbor->max_loc, 
update_info->cost);
-    GNUNET_CONTAINER_heap_update_cost (ctx.neighbor_min_heap,
+    GNUNET_CONTAINER_heap_update_cost (neighbor_min_heap,
                                        update_info->neighbor->min_loc, 
update_info->cost);
     update_info->neighbor->last_activity = update_info->now;
     update_info->neighbor->cost = update_info->cost;
@@ -2192,7 +2170,7 @@
 #endif
 
   now = GNUNET_TIME_absolute_get ();
-  neighbor = GNUNET_CONTAINER_multihashmap_get (ctx.extended_neighbors,
+  neighbor = GNUNET_CONTAINER_multihashmap_get (extended_neighbors,
                                                 &peer->hashPubKey);
   neighbor_update = GNUNET_malloc(sizeof(struct NeighborUpdateInfo));
   neighbor_update->neighbor = neighbor;
@@ -2220,7 +2198,7 @@
 
   /* Either we do not know this peer, or we already do but via a different 
immediate peer */
   if ((neighbor == NULL) ||
-      (GNUNET_CONTAINER_multihashmap_get_multiple(ctx.extended_neighbors,
+      (GNUNET_CONTAINER_multihashmap_get_multiple(extended_neighbors,
                                                   &peer->hashPubKey,
                                                   &update_matching_neighbors,
                                                   neighbor_update) != 
GNUNET_SYSERR))
@@ -2231,13 +2209,13 @@
       {
         distant_neighbor_free(neighbor);
       }
-    else if ((neighbor != NULL) && (cost >= neighbor->cost)) /* Only allow one 
DV connection to each peer */
+    else if (neighbor != NULL) /* Only allow one DV connection to each peer */
       {
         return NULL;
       }
 #endif
       /* new neighbor! */
-      if (cost > ctx.fisheye_depth)
+      if (cost > fisheye_depth)
         {
           /* too costly */
           GNUNET_free(neighbor_update);
@@ -2251,11 +2229,12 @@
       GNUNET_free(encAbout);
 #endif
 
-      if (ctx.max_table_size <=
-          GNUNET_CONTAINER_multihashmap_size (ctx.extended_neighbors))
+      if (max_table_size <=
+          GNUNET_CONTAINER_multihashmap_size (extended_neighbors))
         {
           /* remove most expensive entry */
-          max = GNUNET_CONTAINER_heap_peek (ctx.neighbor_max_heap);
+          max = GNUNET_CONTAINER_heap_peek (neighbor_max_heap);
+          GNUNET_assert(max != NULL);
           if (cost > max->cost)
             {
               /* new entry most expensive, don't create */
@@ -2274,9 +2253,9 @@
       neighbor = GNUNET_malloc (sizeof (struct DistantNeighbor));
       GNUNET_CONTAINER_DLL_insert (referrer->referee_head,
                          referrer->referee_tail, neighbor);
-      neighbor->max_loc = GNUNET_CONTAINER_heap_insert (ctx.neighbor_max_heap,
+      neighbor->max_loc = GNUNET_CONTAINER_heap_insert (neighbor_max_heap,
                                                         neighbor, cost);
-      neighbor->min_loc = GNUNET_CONTAINER_heap_insert (ctx.neighbor_min_heap,
+      neighbor->min_loc = GNUNET_CONTAINER_heap_insert (neighbor_min_heap,
                                                         neighbor, cost);
       neighbor->referrer = referrer;
       memcpy (&neighbor->identity, peer, sizeof (struct GNUNET_PeerIdentity));
@@ -2296,7 +2275,7 @@
         (cost == DIRECT_NEIGHBOR_COST) ? (GNUNET_CRYPTO_random_u32 
(GNUNET_CRYPTO_QUALITY_WEAK, 4) ==
                        0) : GNUNET_NO;
 
-      GNUNET_CONTAINER_multihashmap_put (ctx.extended_neighbors, 
&peer->hashPubKey,
+      GNUNET_CONTAINER_multihashmap_put (extended_neighbors, &peer->hashPubKey,
                                  neighbor,
                                  GNUNET_CONTAINER_MULTIHASHMAPOPTION_MULTIPLE);
 
@@ -2310,7 +2289,7 @@
     }
 #if DEBUG_DV
     GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-                "%s: Size of extended_neighbors is %d\n", "dv", 
GNUNET_CONTAINER_multihashmap_size(ctx.extended_neighbors));
+                "%s: Size of extended_neighbors is %d\n", "dv", 
GNUNET_CONTAINER_multihashmap_size(extended_neighbors));
 #endif
 
   GNUNET_free(neighbor_update);
@@ -2388,7 +2367,7 @@
       return GNUNET_SYSERR;     /* invalid message */
     }
 
-  referrer = GNUNET_CONTAINER_multihashmap_get (ctx.direct_neighbors,
+  referrer = GNUNET_CONTAINER_multihashmap_get (direct_neighbors,
                                                 &peer->hashPubKey);
   if (referrer == NULL)
     return GNUNET_OK;
@@ -2448,7 +2427,7 @@
   GNUNET_free(encPeerFrom);
 #endif
 
-  referrer = GNUNET_CONTAINER_multihashmap_get (ctx.direct_neighbors,
+  referrer = GNUNET_CONTAINER_multihashmap_get (direct_neighbors,
                                                 &peer->hashPubKey);
   if (referrer == NULL)
     return GNUNET_OK;
@@ -2524,7 +2503,7 @@
 {
   struct DirectNeighbor *direct = value;
 
-  GNUNET_CONTAINER_multihashmap_iterate (ctx.extended_neighbors, 
&add_all_extended_peers, direct->send_context);
+  GNUNET_CONTAINER_multihashmap_iterate (extended_neighbors, 
&add_all_extended_peers, direct->send_context);
 
   if (direct->send_context->task != GNUNET_SCHEDULER_NO_TASK)
     GNUNET_SCHEDULER_cancel(sched, direct->send_context->task);
@@ -2543,7 +2522,7 @@
 gossip_all_to_all (void *cls,
                    const struct GNUNET_SCHEDULER_TaskContext *tc)
 {
-  GNUNET_CONTAINER_multihashmap_iterate (ctx.direct_neighbors, 
&gossip_all_to_all_iterator, NULL);
+  GNUNET_CONTAINER_multihashmap_iterate (direct_neighbors, 
&gossip_all_to_all_iterator, NULL);
 
   GNUNET_SCHEDULER_add_delayed (sched,
                                 
GNUNET_TIME_relative_multiply(GNUNET_TIME_UNIT_SECONDS, 5),
@@ -2575,7 +2554,7 @@
   char *direct_id;
 
 
-  distant = GNUNET_CONTAINER_multihashmap_get(ctx.extended_neighbors, 
&to->identity.hashPubKey);
+  distant = GNUNET_CONTAINER_multihashmap_get(extended_neighbors, 
&to->identity.hashPubKey);
   if (distant == NULL)
     {
       return GNUNET_YES;
@@ -2666,18 +2645,18 @@
         }
 
       /* Why do it this way, now we have the distant neighbor! */
-      /*GNUNET_CONTAINER_multihashmap_get_multiple(ctx.extended_neighbors,
+      /*GNUNET_CONTAINER_multihashmap_get_multiple(extended_neighbors,
                                                  &peer->hashPubKey,
                                                  &add_pkey_to_extended,
                                                  &neighbor->pkey);*/
 
-      sent = GNUNET_CONTAINER_multihashmap_iterate (ctx.extended_neighbors, 
&add_all_extended_peers, neighbor->send_context);
+      sent = GNUNET_CONTAINER_multihashmap_iterate (extended_neighbors, 
&add_all_extended_peers, neighbor->send_context);
 
 #if DEBUG_DV_PEER_NUMBERS
       neighbor_pid = GNUNET_strdup(GNUNET_i2s(&neighbor->identity));
       GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "%s: Gossipped %d extended peers to 
%s\n", GNUNET_i2s(&my_identity), sent, neighbor_pid);
 #endif
-      sent = GNUNET_CONTAINER_multihashmap_iterate (ctx.direct_neighbors, 
&add_all_direct_neighbors, neighbor);
+      sent = GNUNET_CONTAINER_multihashmap_iterate (direct_neighbors, 
&add_all_direct_neighbors, neighbor);
 #if DEBUG_DV_PEER_NUMBERS
       GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "%s: Gossipped about %s to %d direct 
peers\n", GNUNET_i2s(&my_identity), neighbor_pid, sent);
       GNUNET_free(neighbor_pid);
@@ -2709,7 +2688,7 @@
               "%s: Receives core connect message for peer %s distance %d!\n", 
"dv", GNUNET_i2s(peer), distance);
 #endif
 
-  if ((distance == DIRECT_NEIGHBOR_COST) && 
(GNUNET_CONTAINER_multihashmap_get(ctx.direct_neighbors, &peer->hashPubKey) == 
NULL))
+  if ((distance == DIRECT_NEIGHBOR_COST) && 
(GNUNET_CONTAINER_multihashmap_get(direct_neighbors, &peer->hashPubKey) == 
NULL))
   {
     peerinfo_iterator = GNUNET_malloc(sizeof(struct PeerIteratorContext));
     neighbor = GNUNET_malloc (sizeof (struct DirectNeighbor));
@@ -2717,7 +2696,7 @@
     neighbor->send_context->toNeighbor = neighbor;
     memcpy (&neighbor->identity, peer, sizeof (struct GNUNET_PeerIdentity));
 
-    GNUNET_assert(GNUNET_SYSERR != GNUNET_CONTAINER_multihashmap_put 
(ctx.direct_neighbors,
+    GNUNET_assert(GNUNET_SYSERR != GNUNET_CONTAINER_multihashmap_put 
(direct_neighbors,
                                &peer->hashPubKey,
                                neighbor, 
GNUNET_CONTAINER_MULTIHASHMAPOPTION_UNIQUE_ONLY));
     about = addUpdateNeighbor (peer, NULL, 0, neighbor, DIRECT_NEIGHBOR_COST);
@@ -2743,9 +2722,9 @@
   }
   else
   {
-    about = GNUNET_CONTAINER_multihashmap_get(ctx.extended_neighbors, 
&peer->hashPubKey);
-    if ((GNUNET_CONTAINER_multihashmap_get(ctx.direct_neighbors, 
&peer->hashPubKey) == NULL) && (about != NULL))
-      sent = GNUNET_CONTAINER_multihashmap_iterate(ctx.direct_neighbors, 
&add_distant_all_direct_neighbors, about);
+    about = GNUNET_CONTAINER_multihashmap_get(extended_neighbors, 
&peer->hashPubKey);
+    if ((GNUNET_CONTAINER_multihashmap_get(direct_neighbors, 
&peer->hashPubKey) == NULL) && (about != NULL))
+      sent = GNUNET_CONTAINER_multihashmap_iterate(direct_neighbors, 
&add_distant_all_direct_neighbors, about);
 #if DEBUG_DV
     GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
                 "%s: Distance (%d) greater than %d or already know about peer 
(%s), not re-adding!\n", "dv", distance, DIRECT_NEIGHBOR_COST, 
GNUNET_i2s(peer));
@@ -2774,7 +2753,7 @@
 #endif
 
   neighbor =
-    GNUNET_CONTAINER_multihashmap_get (ctx.direct_neighbors, 
&peer->hashPubKey);
+    GNUNET_CONTAINER_multihashmap_get (direct_neighbors, &peer->hashPubKey);
   if (neighbor == NULL)
     {
       return;
@@ -2785,17 +2764,17 @@
   fdc.dest = NULL;
   fdc.tid = 0;
 
-  GNUNET_CONTAINER_multihashmap_iterate (ctx.extended_neighbors, 
&find_distant_peer, &fdc);
+  GNUNET_CONTAINER_multihashmap_iterate (extended_neighbors, 
&find_distant_peer, &fdc);
 
   if (fdc.dest != NULL)
     {
       disconnect_context.direct = neighbor;
       disconnect_context.distant = fdc.dest;
-      GNUNET_CONTAINER_multihashmap_iterate (ctx.direct_neighbors, 
&schedule_disconnect_messages, &disconnect_context);
+      GNUNET_CONTAINER_multihashmap_iterate (direct_neighbors, 
&schedule_disconnect_messages, &disconnect_context);
     }
 
   GNUNET_assert (neighbor->referee_tail == NULL);
-  if (GNUNET_NO == GNUNET_CONTAINER_multihashmap_remove (ctx.direct_neighbors,
+  if (GNUNET_NO == GNUNET_CONTAINER_multihashmap_remove (direct_neighbors,
                                         &peer->hashPubKey, neighbor))
     {
       GNUNET_break(0);
@@ -2826,27 +2805,27 @@
 
   /* FIXME: Read from config, or calculate, or something other than this! */
   max_hosts = DEFAULT_DIRECT_CONNECTIONS;
-  ctx.max_table_size = DEFAULT_DV_SIZE;
-  ctx.fisheye_depth = DEFAULT_FISHEYE_DEPTH;
+  max_table_size = DEFAULT_DV_SIZE;
+  fisheye_depth = DEFAULT_FISHEYE_DEPTH;
 
   if (GNUNET_CONFIGURATION_have_value(cfg, "dv", "max_direct_connections"))
     GNUNET_assert(GNUNET_OK == GNUNET_CONFIGURATION_get_value_number(cfg, 
"dv", "max_direct_connections", &max_hosts));
 
   if (GNUNET_CONFIGURATION_have_value(cfg, "dv", "max_total_connections"))
-    GNUNET_assert(GNUNET_OK == GNUNET_CONFIGURATION_get_value_number(cfg, 
"dv", "max_total_connections", &ctx.max_table_size));
+    GNUNET_assert(GNUNET_OK == GNUNET_CONFIGURATION_get_value_number(cfg, 
"dv", "max_total_connections", &max_table_size));
 
 
   if (GNUNET_CONFIGURATION_have_value(cfg, "dv", "fisheye_depth"))
-    GNUNET_assert(GNUNET_OK == GNUNET_CONFIGURATION_get_value_number(cfg, 
"dv", "fisheye_depth", &ctx.fisheye_depth));
+    GNUNET_assert(GNUNET_OK == GNUNET_CONFIGURATION_get_value_number(cfg, 
"dv", "fisheye_depth", &fisheye_depth));
 
-  ctx.neighbor_min_heap =
+  neighbor_min_heap =
     GNUNET_CONTAINER_heap_create (GNUNET_CONTAINER_HEAP_ORDER_MIN);
-  ctx.neighbor_max_heap =
+  neighbor_max_heap =
     GNUNET_CONTAINER_heap_create (GNUNET_CONTAINER_HEAP_ORDER_MAX);
 
-  ctx.direct_neighbors = GNUNET_CONTAINER_multihashmap_create (max_hosts);
-  ctx.extended_neighbors =
-    GNUNET_CONTAINER_multihashmap_create (ctx.max_table_size * 3);
+  direct_neighbors = GNUNET_CONTAINER_multihashmap_create (max_hosts);
+  extended_neighbors =
+    GNUNET_CONTAINER_multihashmap_create (max_table_size * 3);
 
   GNUNET_SERVER_add_handlers (server, plugin_handlers);
   coreAPI =

Modified: gnunet/src/dv/plugin_transport_dv.c
===================================================================
--- gnunet/src/dv/plugin_transport_dv.c 2010-06-21 14:30:08 UTC (rev 11847)
+++ gnunet/src/dv/plugin_transport_dv.c 2010-06-21 16:21:19 UTC (rev 11848)
@@ -317,6 +317,7 @@
       GNUNET_asprintf(&print_string, "DV Peer `%s' via peer`%s'", dest_peer, 
via_peer);
       asc (asc_cls, print_string);
       asc (asc_cls, NULL);
+      GNUNET_free(via_peer);
       GNUNET_free(dest_peer);
       GNUNET_free(print_string);
     }




reply via email to

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