Revert "remove valgrind debugging output"
authorHenning Rogge <hrogge@googlemail.com>
Sun, 13 Jun 2010 15:37:41 +0000 (17:37 +0200)
committerHenning Rogge <hrogge@googlemail.com>
Sun, 13 Jun 2010 15:37:41 +0000 (17:37 +0200)
This reverts commit e28e004a3d763bede8002a07cc03f3772a31724e.

src/common/avl.c
src/olsr_comport.c
src/olsr_comport_txt.c
src/olsr_spf.c

index 2b10904..5599d64 100644 (file)
@@ -631,6 +631,9 @@ avl_delete(struct avl_tree *tree, struct avl_node *node)
   struct avl_node *right;
 
   /* sanity check */
+  if (tree->count == 0) {
+    VALGRIND_PRINTF_BACKTRACE("Error, trying to remove element from empty tree\n");
+  }
   assert(tree->count > 0);
 
   if (node->leader != 0) {
index 4ea23bb..371edd0 100644 (file)
@@ -333,9 +333,6 @@ static void olsr_com_parse_connection(int fd, void *data, unsigned int flags) {
           olsr_ip_to_string(&buf, &con->addr), strerror(errno));
       con->state = CLEANUP;
     }
-    else {
-      con->state = SEND_AND_QUIT;
-    }
   }
 
   switch (con->state) {
@@ -381,7 +378,7 @@ static void olsr_com_parse_connection(int fd, void *data, unsigned int flags) {
     }
   }
   if (con->out.len == 0) {
-    OLSR_DEBUG(LOG_COMPORT, "  deactivating output in scheduler %d\n", con->state);
+    OLSR_DEBUG(LOG_COMPORT, "  deactivating output in scheduler\n");
     disable_olsr_socket(fd, &olsr_com_parse_connection, NULL, SP_PR_WRITE);
     if (con->state == SEND_AND_QUIT) {
       con->state = CLEANUP;
index ac7c5a9..41191a9 100644 (file)
@@ -185,7 +185,7 @@ olsr_com_handle_txtcommand(struct comport_connection *con, char *cmd, char *para
   ptr = (struct olsr_txtcommand *) avl_find(&txt_normal_tree, cmd);
 
   OLSR_DEBUG(LOG_COMPORT, "Looking for command '%s': %s\n",
-    cmd, ptr == NULL ? "unknown" : "available");
+    cmd, ptr ? "unknown" : "available");
   if (ptr == NULL) {
     return UNKNOWN;
   }
index d220283..1d1b7c2 100644 (file)
@@ -102,17 +102,15 @@ olsr_spf_add_cand_tree(struct avl_tree *tree, struct tc_entry *tc)
 static void
 olsr_spf_del_cand_tree(struct avl_tree *tree, struct tc_entry *tc)
 {
-  if (tc->cand_tree_node.key) {
+
 #if !defined REMOVE_LOG_DEBUG
-    struct ipaddr_str buf;
-    char lqbuffer[LQTEXT_MAXLENGTH];
+  struct ipaddr_str buf;
+  char lqbuffer[LQTEXT_MAXLENGTH];
 #endif
-    OLSR_DEBUG(LOG_ROUTING, "SPF: delete candidate %s, cost %s\n",
-        olsr_ip_to_string(&buf, &tc->addr), olsr_get_linkcost_text(tc->path_cost, false, lqbuffer, sizeof(lqbuffer)));
+  OLSR_DEBUG(LOG_ROUTING, "SPF: delete candidate %s, cost %s\n",
+             olsr_ip_to_string(&buf, &tc->addr), olsr_get_linkcost_text(tc->path_cost, false, lqbuffer, sizeof(lqbuffer)));
 
-    avl_delete(tree, &tc->cand_tree_node);
-    tc->cand_tree_node.key = NULL;
-  }
+  avl_delete(tree, &tc->cand_tree_node);
 }
 
 /*
@@ -159,7 +157,7 @@ olsr_spf_extract_best(struct avl_tree *tree)
 static void
 olsr_spf_relax(struct avl_tree *cand_tree, struct tc_entry *tc)
 {
-  struct tc_edge_entry *tc_edge;
+  struct avl_node *edge_node;
   olsr_linkcost new_cost;
 
 #if !defined REMOVE_LOG_DEBUG
@@ -173,8 +171,10 @@ olsr_spf_relax(struct avl_tree *cand_tree, struct tc_entry *tc)
   /*
    * loop through all edges of this vertex.
    */
-  OLSR_FOR_ALL_TC_EDGE_ENTRIES(tc, tc_edge) {
+  for (edge_node = avl_walk_first(&tc->edge_tree); edge_node; edge_node = avl_walk_next(edge_node)) {
+
     struct tc_entry *new_tc;
+    struct tc_edge_entry *tc_edge = edge_tree2tc_edge(edge_node);
 
     assert (tc_edge->edge_inv);
 
@@ -182,11 +182,12 @@ olsr_spf_relax(struct avl_tree *cand_tree, struct tc_entry *tc)
      * total quality of the path through this vertex
      * to the destination of this edge
      */
-    if (tc_edge->virtual) {
-      new_cost = tc->path_cost + tc_edge->edge_inv->cost;
+    // TODO: asymmetric links ? Max(c1,c2) is not really good.
+    if (tc_edge->cost > tc_edge->edge_inv->cost) {
+      new_cost = tc->path_cost + tc_edge->cost;
     }
     else {
-      new_cost = tc->path_cost + tc_edge->cost;
+      new_cost = tc->path_cost + tc_edge->edge_inv->cost;
     }
 
     OLSR_DEBUG(LOG_ROUTING, "SPF:   exploring edge %s, cost %s\n",
@@ -206,11 +207,6 @@ olsr_spf_relax(struct avl_tree *cand_tree, struct tc_entry *tc)
         olsr_spf_del_cand_tree(cand_tree, new_tc);
       }
 
-      /* remove from result list if necessary */
-      if (new_tc->path_list_node.next != NULL && new_tc->path_list_node.prev != NULL) {
-        list_remove(&new_tc->path_list_node);
-      }
-
       /* re-insert on candidate tree with the better metric */
       new_tc->path_cost = new_cost;
       olsr_spf_add_cand_tree(cand_tree, new_tc);
@@ -226,7 +222,7 @@ olsr_spf_relax(struct avl_tree *cand_tree, struct tc_entry *tc)
                  olsr_get_linkcost_text(new_cost, true, lqbuffer, sizeof(lqbuffer)),
                  tc->next_hop ? olsr_ip_to_string(&nbuf, &tc->next_hop->neighbor_iface_addr) : "<none>", new_tc->hops);
     }
-  } OLSR_FOR_ALL_TC_EDGE_ENTRIES_END()
+  }
 }
 
 /*
@@ -311,8 +307,6 @@ olsr_calculate_routing_table(void)
     tc->next_hop = NULL;
     tc->path_cost = ROUTE_COST_BROKEN;
     tc->hops = 0;
-    tc->cand_tree_node.key = NULL;
-    list_node_init(&tc->path_list_node);
   }
   OLSR_FOR_ALL_TC_ENTRIES_END(tc);