};
+/**
+ * Calculate the path's desirability score.
+ *
+ * @param path path to calculate the score for
+ */
+static void
+recalculate_path_desirability (struct CadetPeerPath *path)
+{
+ /* FIXME: update path desirability! */
+ GNUNET_break (0); // not implemented
+}
+
+
/**
* Return how much we like keeping the path. This is an aggregate
* score based on various factors, including the age of the path
entry = path->entries[path->entries_length - 1];
path->hn = GCP_attach_path (entry->peer,
path,
- path->entries_length,
+ path->entries_length - 1,
GNUNET_NO);
if (NULL != path->hn)
return; /* yep, got attached, we are done. */
else
entry->score += delta;
}
-
- /* FIXME: update path desirability! */
+ recalculate_path_desirability (path);
}
path->entries[old_len + i] = entry;
entry->peer = peers[i];
entry->path = path;
+ }
+ for (i=num_peers-1;i >= 0;i--)
+ {
+ struct CadetPeerPathEntry *entry = path->entries[old_len + i];
+
GCP_path_entry_add (entry->peer,
entry,
old_len + i);
struct CadetPeerPathEntry *entry = path->entries[old_len + i];
path->entries_length = old_len + i + 1;
- /* FIXME: note that path->desirability is used, but not yet updated here! */
+ recalculate_path_desirability (path);
hn = GCP_attach_path (peers[i],
path,
old_len + (unsigned int) i,
path->entries[i] = entry;
entry->peer = cpath[i];
entry->path = path;
+ }
+ for (i=path->entries_length-1;i>=0;i--)
+ {
+ struct CadetPeerPathEntry *entry = path->entries[i];
+
GCP_path_entry_add (entry->peer,
entry,
i);
struct CadetPeerPathEntry *entry = path->entries[i];
path->entries_length = i + 1;
- /* FIXME: note that path->desirability is used, but not yet initialized here! */
+ recalculate_path_desirability (path);
hn = GCP_attach_path (cpath[i],
path,
(unsigned int) i,
/* Shrink path to actual useful length */
GNUNET_array_grow (path->entries,
path->entries_length,
- i);
+ i + 1);
LOG (GNUNET_ERROR_TYPE_DEBUG,
"Created new path %s based on information from DHT\n",
GCPP_2s (path));
path->entries[i] = entry;
entry->peer = cpath[i];
entry->path = path;
+ }
+ for (int i=path_length-1;i>=0;i--)
+ {
+ struct CadetPeerPathEntry *entry = path->entries[i];
+
GCP_path_entry_add (entry->peer,
entry,
i);
}
+ recalculate_path_desirability (path);
LOG (GNUNET_ERROR_TYPE_DEBUG,
"Created new path %s to create inverse for incoming connection\n",
GCPP_2s (path));