continue to fix extract result
[oweals/gnunet.git] / src / dht / gnunet-service-xdht_neighbours.c
index eee5d8f5f70d7bfc54ff5ef8d4fff91059c1dcbf..6f3137f8a4b47d90b4191757558930ae7f27b29b 100644 (file)
@@ -1,6 +1,6 @@
 /*
      This file is part of GNUnet.
-     (C) 2009-2014 Christian Grothoff (and other contributing authors)
+     Copyright (C) 2009-2014 GNUnet e.V.
 
      GNUnet is free software; you can redistribute it and/or modify
      it under the terms of the GNU General Public License as published
@@ -14,8 +14,8 @@
 
      You should have received a copy of the GNU General Public License
      along with GNUnet; see the file COPYING.  If not, write to the
-     Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-     Boston, MA 02111-1307, USA.
+     Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+     Boston, MA 02110-1301, USA.
 */
 
 /**
@@ -41,7 +41,6 @@
 #include "gnunet-service-xdht_datacache.h"
 #include "gnunet-service-xdht_neighbours.h"
 #include "gnunet-service-xdht_routing.h"
-#include <fenv.h>
 #include "dht.h"
 
 /**
@@ -285,7 +284,7 @@ struct PeerGetResultMessage
   /**
    * When does the content expire?
    */
-  struct GNUNET_TIME_Absolute expiration_time;
+  struct GNUNET_TIME_AbsoluteNBO expiration_time;
 
   /**
    * The key of the corresponding GET request.
@@ -854,25 +853,25 @@ struct VerifySuccessorContext
  * Task that sends FIND FINGER TRAIL requests. This task is started when we have
  * get our first friend.
  */
-static GNUNET_SCHEDULER_TaskIdentifier find_finger_trail_task;
+static struct GNUNET_SCHEDULER_Task * find_finger_trail_task;
 
 /**
  * Task that sends verify successor message. This task is started when we get
  * our successor for the first time.
  */
-static GNUNET_SCHEDULER_TaskIdentifier send_verify_successor_task;
+static struct GNUNET_SCHEDULER_Task * send_verify_successor_task;
 
 /**
  * Task that sends verify successor message. This task is started when we get
  * our successor for the first time.
  */
-static GNUNET_SCHEDULER_TaskIdentifier send_verify_successor_retry_task;
+static struct GNUNET_SCHEDULER_Task * send_verify_successor_retry_task;
 
 /**
  * Task that sends verify successor message. This task is started when we get
  * our successor for the first time.
  */
-static GNUNET_SCHEDULER_TaskIdentifier send_notify_new_successor_retry_task;
+static struct GNUNET_SCHEDULER_Task * send_notify_new_successor_retry_task;
 
 /**
  * Identity of this peer.
@@ -979,11 +978,18 @@ core_transmit_notify (void *cls, size_t size, void *buf)
   size_t msize;
 
   peer->th = NULL;
-  while ((NULL != (pending = peer->head)) &&
-         (0 == GNUNET_TIME_absolute_get_remaining (pending->timeout).rel_value_us))
+  while ( (NULL != (pending = peer->head)) &&
+          (0 == GNUNET_TIME_absolute_get_remaining (pending->timeout).rel_value_us) )
   {
+    GNUNET_STATISTICS_update (GDS_stats,
+                              gettext_noop
+                              ("# Messages dropped (CORE timeout)"),
+                              1,
+                              GNUNET_NO);
     peer->pending_count--;
-    GNUNET_CONTAINER_DLL_remove (peer->head, peer->tail, pending);
+    GNUNET_CONTAINER_DLL_remove (peer->head,
+                                 peer->tail,
+                                 pending);
     GNUNET_free (pending);
   }
   if (NULL == pending)
@@ -1009,7 +1015,8 @@ core_transmit_notify (void *cls, size_t size, void *buf)
   {
     GNUNET_STATISTICS_update (GDS_stats,
                               gettext_noop
-                              ("# Bytes transmitted to other peers"), msize,
+                              ("# Bytes transmitted to other peers"),
+                              msize,
                               GNUNET_NO);
     memcpy (&cbuf[off], pending->msg, msize);
     off += msize;
@@ -2174,11 +2181,11 @@ find_local_best_known_next_hop (uint64_t destination_finger_value,
 void
 GDS_NEIGHBOURS_send_put (const struct GNUNET_HashCode *key,
                          enum GNUNET_BLOCK_Type block_type,
-                                          enum GNUNET_DHT_RouteOption options,
-                                          uint32_t desired_replication_level,
-                                          struct GNUNET_PeerIdentity best_known_dest,
-                                          struct GNUNET_HashCode intermediate_trail_id,
-                                          struct GNUNET_PeerIdentity *target_peer,
+                         enum GNUNET_DHT_RouteOption options,
+                         uint32_t desired_replication_level,
+                         struct GNUNET_PeerIdentity best_known_dest,
+                         struct GNUNET_HashCode intermediate_trail_id,
+                         struct GNUNET_PeerIdentity *target_peer,
                          uint32_t hop_count,
                          uint32_t put_path_length,
                          struct GNUNET_PeerIdentity *put_path,
@@ -2469,6 +2476,7 @@ GDS_NEIGHBOURS_handle_get(const struct GNUNET_HashCode *key,
 
 /**
  * Send the get result to requesting client.
+ *
  * @param key Key of the requested data.
  * @param type Block type
  * @param target_peer Next peer to forward the message to.
@@ -2507,8 +2515,7 @@ GDS_NEIGHBOURS_send_get_result (const struct GNUNET_HashCode *key,
   if (msize >= GNUNET_CONSTANTS_MAX_ENCRYPTED_MESSAGE_SIZE)
   {
     put_path_length = 0;
-    msize = msize - put_path_length;
-    return;
+    msize = msize - put_path_length * sizeof (struct GNUNET_PeerIdentity);
   }
 
   if (msize >= GNUNET_CONSTANTS_MAX_ENCRYPTED_MESSAGE_SIZE)
@@ -2550,7 +2557,7 @@ GDS_NEIGHBOURS_send_get_result (const struct GNUNET_HashCode *key,
   get_result->header.type = htons (GNUNET_MESSAGE_TYPE_XDHT_P2P_GET_RESULT);
   get_result->key = *key;
   get_result->querying_peer = *source_peer;
-  get_result->expiration_time = expiration;
+  get_result->expiration_time = GNUNET_TIME_absolute_hton (expiration);
   get_result->get_path_length = htonl (get_path_length);
   get_result->put_path_length = htonl (put_path_length);
   paths = (struct GNUNET_PeerIdentity *)&get_result[1];
@@ -2667,11 +2674,9 @@ compute_finger_identity_value (unsigned int finger_index)
  * finger identity through this random friend.
  *
  * @param cls closure for this task
- * @param tc the context under which the task is running
  */
 static void
-send_find_finger_trail_message (void *cls,
-                                const struct GNUNET_SCHEDULER_TaskContext *tc)
+send_find_finger_trail_message (void *cls)
 {
   struct FriendInfo *target_friend;
   struct GNUNET_HashCode trail_id;
@@ -2909,7 +2914,7 @@ add_new_trail (struct FingerInfo *existing_finger,
     friend = GNUNET_CONTAINER_multipeermap_get (friend_peermap,
                                                 &new_trail[0]);
   }
-
+  GNUNET_assert (NULL != friend);
   friend->trails_count++;
   for (i = 0; i < new_trail_length; i++)
   {
@@ -3212,12 +3217,11 @@ add_new_finger (struct GNUNET_PeerIdentity finger_identity,
  * Periodic task to verify current successor. There can be multiple trails to reach
  * to successor, choose the shortest one and send verify successor message
  * across that trail.
+ *
  * @param cls closure for this task
- * @param tc the context under which the task is running
  */
 static void
-send_verify_successor_message (void *cls,
-                               const struct GNUNET_SCHEDULER_TaskContext *tc)
+send_verify_successor_message (void *cls)
 {
   struct FriendInfo *target_friend;
   struct GNUNET_HashCode trail_id;
@@ -3230,7 +3234,7 @@ send_verify_successor_message (void *cls,
   successor = &finger_table[0];
 
   /* This task will be scheduled when the result for Verify Successor is received. */
-  send_verify_successor_task = GNUNET_SCHEDULER_NO_TASK;
+  send_verify_successor_task = NULL;
 
   /* When verify successor is being called for first time *for current context*
    * cls will be NULL. If send_verify_successor_retry_task is not NO_TASK, we
@@ -3251,7 +3255,7 @@ send_verify_successor_message (void *cls,
      * --> Waiting for notify confirmation. again don't wait for it. notify
      *    confirmation will not succeded.
      */
-    if (send_verify_successor_retry_task != GNUNET_SCHEDULER_NO_TASK)
+    if (send_verify_successor_retry_task != NULL)
     {
       /* FIXME: Are we scheduling retry task as soon as we send verify message.
        If yes then here before making this task, first check if the message
@@ -3305,8 +3309,10 @@ send_verify_successor_message (void *cls,
   trail_id = trail->trail_id;
   if (NULL == GDS_ROUTING_get_next_hop(trail_id,GDS_ROUTING_SRC_TO_DEST))
   {
-    DEBUG(" NO ENTRY FOUND IN %s ROUTING TABLE for trail id %s, line",
-            GNUNET_i2s(&my_identity), GNUNET_h2s(&trail->trail_id), __LINE__);
+    DEBUG(" NO ENTRY FOUND IN %s ROUTING TABLE for trail id %s, line %u",
+          GNUNET_i2s (&my_identity),
+          GNUNET_h2s (&trail->trail_id),
+          __LINE__);
     GNUNET_break(0);
     return;
   }
@@ -3366,7 +3372,7 @@ update_current_search_finger_index (unsigned int finger_table_index)
     current_search_finger_index = PREDECESSOR_FINGER_ID;
     if (0 != GNUNET_CRYPTO_cmp_peer_identity (&my_identity, &successor->finger_identity))
     {
-      if (GNUNET_SCHEDULER_NO_TASK == send_verify_successor_task)
+      if (NULL == send_verify_successor_task)
       {
         send_verify_successor_task =
                 GNUNET_SCHEDULER_add_now (&send_verify_successor_message, NULL);
@@ -3651,7 +3657,7 @@ handle_dht_p2p_put (void *cls, const struct GNUNET_PeerIdentity *peer,
   struct GNUNET_PeerIdentity best_known_dest;
   struct GNUNET_HashCode received_intermediate_trail_id;
   struct GNUNET_HashCode intermediate_trail_id;
-  struct GNUNET_PeerIdentity *next_hop;
+  struct GNUNET_PeerIdentity next_hop;
   struct GNUNET_PeerIdentity *next_routing_hop;
   enum GNUNET_DHT_RouteOption options;
   struct GNUNET_HashCode test_key;
@@ -3728,6 +3734,7 @@ handle_dht_p2p_put (void *cls, const struct GNUNET_PeerIdentity *peer,
   {
     switch (GNUNET_BLOCK_evaluate (GDS_block_context,
                                    ntohl (put->block_type),
+                                   GNUNET_BLOCK_EO_NONE,
                                    NULL,    /* query */
                                    NULL, 0, /* bloom filer */
                                    NULL, 0, /* xquery */
@@ -3777,8 +3784,7 @@ handle_dht_p2p_put (void *cls, const struct GNUNET_PeerIdentity *peer,
   key_value = GNUNET_ntohll (key_value);
   successor = find_local_best_known_next_hop (key_value,
                                               GDS_FINGER_TYPE_NON_PREDECESSOR);
-  next_hop = GNUNET_new (struct GNUNET_PeerIdentity);
-  *next_hop = successor.next_hop;
+  next_hop = successor.next_hop;
   intermediate_trail_id = successor.trail_id;
   best_known_dest = successor.best_known_destination;
 
@@ -3788,7 +3794,7 @@ handle_dht_p2p_put (void *cls, const struct GNUNET_PeerIdentity *peer,
                                                  GDS_ROUTING_SRC_TO_DEST);
     if (NULL != next_routing_hop)
     {
-      next_hop = next_routing_hop;
+      next_hop = *next_routing_hop;
       intermediate_trail_id = received_intermediate_trail_id;
       best_known_dest = current_best_known_dest;
     }
@@ -3831,19 +3837,19 @@ handle_dht_p2p_put (void *cls, const struct GNUNET_PeerIdentity *peer,
           GDS_NEIGHBOURS_send_put (&put->key,
                                   ntohl (put->block_type),ntohl (put->options),
                                   ntohl (put->desired_replication_level),
-                                  best_known_dest, intermediate_trail_id, next_hop,
+                                  best_known_dest, intermediate_trail_id, &next_hop,
                                   hop_count, putlen, pp,
                                   GNUNET_TIME_absolute_ntoh (put->expiration_time),
                                   payload, payload_size);
           return GNUNET_OK;
         }
-        next_hop = &next_hop_finger->trail_list[i].trail_head->peer;
+        next_hop = next_hop_finger->trail_list[i].trail_head->peer;
         GDS_NEIGHBOURS_send_put (&put->key,
                                  ntohl (put->block_type),ntohl (put->options),
                                  ntohl (put->desired_replication_level),
                                  best_known_dest,
                                  next_hop_finger->trail_list[i].trail_id,
-                                 next_hop, hop_count, putlen, pp,
+                                 &next_hop, hop_count, putlen, pp,
                                  GNUNET_TIME_absolute_ntoh (put->expiration_time),
                                  payload, payload_size);
        }
@@ -3854,7 +3860,7 @@ handle_dht_p2p_put (void *cls, const struct GNUNET_PeerIdentity *peer,
   GDS_NEIGHBOURS_send_put (&put->key,
                            ntohl (put->block_type),ntohl (put->options),
                            ntohl (put->desired_replication_level),
-                           best_known_dest, intermediate_trail_id, next_hop,
+                           best_known_dest, intermediate_trail_id, &next_hop,
                            hop_count, putlen, pp,
                            GNUNET_TIME_absolute_ntoh (put->expiration_time),
                            payload, payload_size);
@@ -3885,7 +3891,7 @@ handle_dht_p2p_get (void *cls, const struct GNUNET_PeerIdentity *peer,
   struct GNUNET_HashCode intermediate_trail_id;
   struct GNUNET_HashCode received_intermediate_trail_id;
   struct Closest_Peer successor;
-  struct GNUNET_PeerIdentity *next_hop;
+  struct GNUNET_PeerIdentity next_hop;
   struct GNUNET_PeerIdentity *next_routing_hop;
   uint32_t get_length;
   uint64_t key_value;
@@ -3956,8 +3962,7 @@ handle_dht_p2p_get (void *cls, const struct GNUNET_PeerIdentity *peer,
 
   successor = find_local_best_known_next_hop (key_value,
                                                 GDS_FINGER_TYPE_NON_PREDECESSOR);
-  next_hop = GNUNET_new (struct GNUNET_PeerIdentity);
-  *next_hop = successor.next_hop;
+  next_hop = successor.next_hop;
   best_known_dest = successor.best_known_destination;
   intermediate_trail_id = successor.trail_id;
   /* I am not the final destination. I am part of trail to reach final dest. */
@@ -3967,7 +3972,7 @@ handle_dht_p2p_get (void *cls, const struct GNUNET_PeerIdentity *peer,
                                                   GDS_ROUTING_SRC_TO_DEST);
     if (NULL != next_routing_hop)
     {
-      next_hop = next_routing_hop;
+      next_hop = *next_routing_hop;
       best_known_dest = current_best_known_dest;
       intermediate_trail_id = received_intermediate_trail_id;
     }
@@ -4006,17 +4011,17 @@ handle_dht_p2p_get (void *cls, const struct GNUNET_PeerIdentity *peer,
       {
         GDS_NEIGHBOURS_send_get (&(get->key), get->block_type, get->options,
                                 get->desired_replication_level, best_known_dest,
-                                intermediate_trail_id, next_hop, hop_count,
+                                intermediate_trail_id, &next_hop, hop_count,
                                 get_length, gp);
         return GNUNET_OK;
       }
       if (GNUNET_YES == next_hop_finger->trail_list[i].is_present)
       {
-        next_hop = &next_hop_finger->trail_list[i].trail_head->peer;
+        next_hop = next_hop_finger->trail_list[i].trail_head->peer;
         GDS_NEIGHBOURS_send_get (&(get->key), get->block_type, get->options,
                                  get->desired_replication_level, best_known_dest,
                                  next_hop_finger->trail_list[i].trail_id,
-                                 next_hop, hop_count,
+                                 &next_hop, hop_count,
                                  get_length, gp);
        }
     }
@@ -4025,7 +4030,7 @@ handle_dht_p2p_get (void *cls, const struct GNUNET_PeerIdentity *peer,
 #endif
     GDS_NEIGHBOURS_send_get (&(get->key), get->block_type, get->options,
                              get->desired_replication_level, best_known_dest,
-                             intermediate_trail_id, next_hop, hop_count,
+                             intermediate_trail_id, &next_hop, hop_count,
                              get_length, gp);
   }
   return GNUNET_YES;
@@ -4091,7 +4096,8 @@ handle_dht_p2p_get_result (void *cls, const struct GNUNET_PeerIdentity *peer,
 
   if (0 == (GNUNET_CRYPTO_cmp_peer_identity (&my_identity, &(get_path[0]))))
   {
-    GDS_CLIENTS_handle_reply (get_result->expiration_time, &(get_result->key),
+    GDS_CLIENTS_handle_reply (GNUNET_TIME_absolute_ntoh (get_result->expiration_time),
+                              &(get_result->key),
                               getlen, get_path, putlen,
                               put_path, get_result->type, payload_size, payload);
     return GNUNET_YES;
@@ -4114,7 +4120,8 @@ handle_dht_p2p_get_result (void *cls, const struct GNUNET_PeerIdentity *peer,
     GDS_NEIGHBOURS_send_get_result (&(get_result->key), get_result->type,
                                     &get_path[current_path_index - 1],
                                     &(get_result->querying_peer), putlen, put_path,
-                                    getlen, get_path, get_result->expiration_time,
+                                    getlen, get_path,
+                                    GNUNET_TIME_absolute_ntoh (get_result->expiration_time),
                                     payload, payload_size);
     return GNUNET_YES;
   }
@@ -4550,8 +4557,6 @@ get_shortest_trail (struct FingerInfo *finger,
   struct GNUNET_PeerIdentity *trail_list;
   unsigned int i;
 
-  trail = GNUNET_new (struct Trail);
-
   /* Get the shortest trail to reach to current successor. */
   for (i = 0; i < finger->trails_count; i++)
   {
@@ -4693,15 +4698,16 @@ get_trail_src_to_curr_pred (struct GNUNET_PeerIdentity source_peer,
   struct FingerInfo *current_predecessor;
   int i;
   unsigned int j;
+  unsigned int len;
 
   current_predecessor = &finger_table[PREDECESSOR_FINGER_ID];
 
   /* Check if trail_src_to_me contains current_predecessor. */
   for (i = 0; i < trail_src_to_me_len; i++)
   {
-    if(0 != GNUNET_CRYPTO_cmp_peer_identity(&trail_src_to_me[i],
-                                            &current_predecessor->finger_identity))
-        continue;
+    if (0 != GNUNET_CRYPTO_cmp_peer_identity(&trail_src_to_me[i],
+                                             &current_predecessor->finger_identity))
+      continue;
 
 
     *trail_src_to_curr_pred_length = i;
@@ -4711,7 +4717,7 @@ get_trail_src_to_curr_pred (struct GNUNET_PeerIdentity source_peer,
 
      trail_src_to_curr_pred = GNUNET_malloc (*trail_src_to_curr_pred_length *
                                               sizeof(struct GNUNET_PeerIdentity));
-     for(j = 0; j < i;j++)
+     for (j = 0; j < i; j++)
        trail_src_to_curr_pred[j] = trail_src_to_me[j];
      return trail_src_to_curr_pred;
   }
@@ -4721,36 +4727,34 @@ get_trail_src_to_curr_pred (struct GNUNET_PeerIdentity source_peer,
                                               &trail_me_to_curr_pred_length);
 
   /* Check if trail contains the source_peer. */
-  for(i = trail_me_to_curr_pred_length - 1; i >= 0; i--)
+  for (i = trail_me_to_curr_pred_length - 1; i >= 0; i--)
   {
-    if(0 != GNUNET_CRYPTO_cmp_peer_identity (&source_peer,
-                                             &trail_me_to_curr_pred[i]))
+    if (0 != GNUNET_CRYPTO_cmp_peer_identity (&source_peer,
+                                              &trail_me_to_curr_pred[i]))
       continue;
 
-     /* Source is NOT part of trail. */
-     i = i+1;
-
-     /* Source is the last element in the trail to reach to my pred.
-         Source is direct friend of the pred. */
-     if (trail_me_to_curr_pred_length == i)
-     {
-        *trail_src_to_curr_pred_length = 0;
-        return NULL;
-     }
-
-     *trail_src_to_curr_pred_length = trail_me_to_curr_pred_length - i;
-     trail_src_to_curr_pred = GNUNET_malloc (sizeof (struct GNUNET_PeerIdentity)*
-                                              *trail_src_to_curr_pred_length);
-
-     for(j = 0; j < *trail_src_to_curr_pred_length; i++,j++)
-     {
-       trail_src_to_curr_pred[j] = trail_me_to_curr_pred[i];
-     }
-     GNUNET_free_non_null(trail_me_to_curr_pred);
-     return trail_src_to_curr_pred;
+    /* Source is NOT part of trail. */
+    i++;
+
+    /* Source is the last element in the trail to reach to my pred.
+       Source is direct friend of the pred. */
+    if (trail_me_to_curr_pred_length == i)
+    {
+      *trail_src_to_curr_pred_length = 0;
+      GNUNET_free_non_null (trail_me_to_curr_pred);
+      return NULL;
+    }
+
+    *trail_src_to_curr_pred_length = trail_me_to_curr_pred_length - i;
+    trail_src_to_curr_pred = GNUNET_malloc (sizeof (struct GNUNET_PeerIdentity)*
+                                            *trail_src_to_curr_pred_length);
+
+    for (j = 0; j < *trail_src_to_curr_pred_length; i++,j++)
+      trail_src_to_curr_pred[j] = trail_me_to_curr_pred[i];
+    GNUNET_free_non_null (trail_me_to_curr_pred);
+    return trail_src_to_curr_pred;
   }
 
-  unsigned int len;
   trail_src_to_curr_pred = check_for_duplicate_entries (trail_src_to_me,
                                                         trail_src_to_me_len,
                                                         trail_me_to_curr_pred,
@@ -5072,10 +5076,10 @@ struct SendNotifyContext
   unsigned int num_retries_scheduled;
 };
 
+
 void
-send_notify_new_successor (void *cls,
-                           const struct GNUNET_SCHEDULER_TaskContext
-                           * tc);
+send_notify_new_successor (void *cls);
+
 
 /**
  * Check if the peer which sent us verify successor result message is still ours
@@ -5130,7 +5134,7 @@ compare_and_update_successor (struct GNUNET_PeerIdentity curr_succ,
       GNUNET_STATISTICS_set (GDS_stats, key, succ, 0);
       GNUNET_free (key);
     }
-    if (send_verify_successor_task == GNUNET_SCHEDULER_NO_TASK)
+    if (send_verify_successor_task == NULL)
       send_verify_successor_task =
               GNUNET_SCHEDULER_add_delayed(verify_successor_next_send_time,
                                            &send_verify_successor_message,
@@ -5170,7 +5174,7 @@ compare_and_update_successor (struct GNUNET_PeerIdentity curr_succ,
       successor_times--;
 
 
-    if (send_verify_successor_task == GNUNET_SCHEDULER_NO_TASK)
+    if (send_verify_successor_task == NULL)
       send_verify_successor_task =
               GNUNET_SCHEDULER_add_delayed(verify_successor_next_send_time,
                                            &send_verify_successor_message,
@@ -5236,21 +5240,18 @@ compare_and_update_successor (struct GNUNET_PeerIdentity curr_succ,
   notify_ctx->succesor_trail_id = trail_id;
   notify_ctx->target_friend = target_friend;
   notify_ctx->num_retries_scheduled = 0;
+  GNUNET_free_non_null (trail_me_to_probable_succ);
 
   // TODO: Check if we should verify before schedule if already scheduled.
   GNUNET_SCHEDULER_add_now(&send_notify_new_successor, (void*)notify_ctx);
-
-  return;
 }
 
 
 
 void
-send_notify_new_successor (void *cls,
-                           const struct GNUNET_SCHEDULER_TaskContext
-                           * tc)
+send_notify_new_successor (void *cls)
 {
-  struct SendNotifyContext *ctx = (struct SendNotifyContext *) cls;
+  struct SendNotifyContext *ctx = cls;
 
   GDS_NEIGHBOURS_send_notify_new_successor (ctx->source_peer,
                                             ctx->successor,
@@ -5260,7 +5261,7 @@ send_notify_new_successor (void *cls,
                                             ctx->target_friend);
 
   if (0 == ctx->num_retries_scheduled &&
-          send_notify_new_successor_retry_task != GNUNET_SCHEDULER_NO_TASK)
+          send_notify_new_successor_retry_task != NULL)
   {
     // Result from previous notify successos hasn't arrived, so the retry task
     // hasn't been cancelled! Already a new notify successor must be called.
@@ -5269,7 +5270,7 @@ send_notify_new_successor (void *cls,
     old_notify_ctx = GNUNET_SCHEDULER_cancel(send_notify_new_successor_retry_task);
     GNUNET_free (old_notify_ctx->successor_trail);
     GNUNET_free (old_notify_ctx);
-    send_notify_new_successor_retry_task = GNUNET_SCHEDULER_NO_TASK;
+    send_notify_new_successor_retry_task = NULL;
   }
 
   ctx->num_retries_scheduled++;
@@ -5335,12 +5336,12 @@ handle_dht_p2p_verify_successor_result(void *cls,
   if(0 == (GNUNET_CRYPTO_cmp_peer_identity (&querying_peer, &my_identity)))
   {
     /* Cancel Retry Task */
-    if (GNUNET_SCHEDULER_NO_TASK != send_verify_successor_retry_task)
+    if (NULL != send_verify_successor_retry_task)
     {
       struct VerifySuccessorContext *ctx;
       ctx = GNUNET_SCHEDULER_cancel(send_verify_successor_retry_task);
       GNUNET_free(ctx);
-      send_verify_successor_retry_task = GNUNET_SCHEDULER_NO_TASK;
+      send_verify_successor_retry_task = NULL;
     }
     compare_and_update_successor (current_successor,
                                   probable_successor, trail, trail_length);
@@ -5353,8 +5354,10 @@ handle_dht_p2p_verify_successor_result(void *cls,
   {
     /* Here it may happen that source peer has found a new successor, and removed
      the trail, Hence no entry found in the routing table. Fail silently.*/
-    DEBUG(" NO ENTRY FOUND IN %s ROUTING TABLE for trail id %s, line",
-            GNUNET_i2s(&my_identity), GNUNET_h2s(&trail_id), __LINE__);
+    DEBUG (" NO ENTRY FOUND IN %s ROUTING TABLE for trail id %s, line %u",
+           GNUNET_i2s (&my_identity),
+           GNUNET_h2s (&trail_id),
+           __LINE__);
     GNUNET_break_op(0);
     return GNUNET_OK;
   }
@@ -5433,6 +5436,7 @@ handle_dht_p2p_notify_new_successor(void *cls,
 
     compare_and_update_predecessor (source, trail, trail_length);
     target_friend = GNUNET_CONTAINER_multipeermap_get (friend_peermap, peer);
+    GNUNET_assert (NULL != target_friend);
     GDS_NEIGHBOURS_send_notify_succcessor_confirmation (trail_id,
                                                         GDS_ROUTING_DEST_TO_SRC,
                                                         target_friend);
@@ -5530,15 +5534,15 @@ handle_dht_p2p_notify_succ_confirmation (void *cls,
     */
 
     // TODO: cancel schedule of notify_successor_retry_task
-    if (send_notify_new_successor_retry_task != GNUNET_SCHEDULER_NO_TASK)
+    if (send_notify_new_successor_retry_task != NULL)
     {
       struct SendNotifyContext *notify_ctx;
       notify_ctx = GNUNET_SCHEDULER_cancel(send_notify_new_successor_retry_task);
       GNUNET_free (notify_ctx->successor_trail);
       GNUNET_free (notify_ctx);
-      send_notify_new_successor_retry_task = GNUNET_SCHEDULER_NO_TASK;
+      send_notify_new_successor_retry_task = NULL;
     }
-    if (send_verify_successor_task == GNUNET_SCHEDULER_NO_TASK)
+    if (send_verify_successor_task == NULL)
     {
       verify_successor_next_send_time.rel_value_us =
       DHT_SEND_VERIFY_SUCCESSOR_INTERVAL.rel_value_us +
@@ -5773,8 +5777,10 @@ handle_dht_p2p_trail_teardown (void *cls, const struct GNUNET_PeerIdentity *peer
   next_hop = GDS_ROUTING_get_next_hop (trail_id, trail_direction);
   if (NULL == next_hop)
   {
-    DEBUG(" NO ENTRY FOUND IN %s ROUTING TABLE for trail id %s, line",
-            GNUNET_i2s(&my_identity), GNUNET_h2s(&trail_id), __LINE__);
+    DEBUG(" NO ENTRY FOUND IN %s ROUTING TABLE for trail id %s, line %u",
+          GNUNET_i2s (&my_identity),
+          GNUNET_h2s(&trail_id),
+          __LINE__);
     GNUNET_break (0);
     return GNUNET_SYSERR;
   }
@@ -6060,10 +6066,10 @@ handle_core_disconnect (void *cls,
   if (0 != GNUNET_CONTAINER_multipeermap_size (friend_peermap))
     return;
 
-  if (GNUNET_SCHEDULER_NO_TASK != find_finger_trail_task)
+  if (NULL != find_finger_trail_task)
   {
       GNUNET_SCHEDULER_cancel (find_finger_trail_task);
-      find_finger_trail_task = GNUNET_SCHEDULER_NO_TASK;
+      find_finger_trail_task = NULL;
   }
   else
     GNUNET_break (0);
@@ -6106,7 +6112,7 @@ handle_core_connect (void *cls, const struct GNUNET_PeerIdentity *peer_identity)
    * selected after some time out. This is to ensure that both peers have added
    * each other as their friend. */
   /* Got a first connection, good time to start with FIND FINGER TRAIL requests...*/
-  if (GNUNET_SCHEDULER_NO_TASK == find_finger_trail_task)
+  if (NULL == find_finger_trail_task)
   {
     find_finger_trail_task = GNUNET_SCHEDULER_add_now (&send_find_finger_trail_message, NULL);
   }
@@ -6241,33 +6247,33 @@ GDS_NEIGHBOURS_done (void)
   GNUNET_CONTAINER_multipeermap_destroy (friend_peermap);
   friend_peermap = NULL;
 
-  if (GNUNET_SCHEDULER_NO_TASK != find_finger_trail_task)
+  if (NULL != find_finger_trail_task)
   {
     GNUNET_SCHEDULER_cancel (find_finger_trail_task);
-    find_finger_trail_task = GNUNET_SCHEDULER_NO_TASK;
+    find_finger_trail_task = NULL;
   }
 
-  if (GNUNET_SCHEDULER_NO_TASK != send_verify_successor_task)
+  if (NULL != send_verify_successor_task)
   {
     GNUNET_SCHEDULER_cancel (send_verify_successor_task);
-    send_verify_successor_task = GNUNET_SCHEDULER_NO_TASK;
+    send_verify_successor_task = NULL;
   }
 
-  if (GNUNET_SCHEDULER_NO_TASK != send_verify_successor_retry_task)
+  if (NULL != send_verify_successor_retry_task)
   {
     struct VerifySuccessorContext *ctx;
     ctx = GNUNET_SCHEDULER_cancel (send_verify_successor_retry_task);
     GNUNET_free(ctx);
-    send_verify_successor_retry_task = GNUNET_SCHEDULER_NO_TASK;
+    send_verify_successor_retry_task = NULL;
   }
 
-  if (send_notify_new_successor_retry_task != GNUNET_SCHEDULER_NO_TASK)
+  if (send_notify_new_successor_retry_task != NULL)
   {
     struct SendNotifyContext *notify_ctx;
     notify_ctx = GNUNET_SCHEDULER_cancel(send_notify_new_successor_retry_task);
     GNUNET_free (notify_ctx->successor_trail);
     GNUNET_free (notify_ctx);
-    send_notify_new_successor_retry_task = GNUNET_SCHEDULER_NO_TASK;
+    send_notify_new_successor_retry_task = NULL;
   }
 }