*/
struct GNUNET_TIME_Absolute last_contact;
+ /**
+ * Task handler for delayed connect task;
+ */
+ GNUNET_SCHEDULER_TaskIdentifier connect_task;
+
/**
* Number of attempts to reconnect so far
*/
{
struct MeshPathInfo *path_info = cls;
+ path_info->peer->connect_task = GNUNET_SCHEDULER_NO_TASK;
+
if (0 != (GNUNET_SCHEDULER_REASON_SHUTDOWN & tc->reason))
{
GNUNET_free (cls);
path_destroy (p);
p = nextp;
}
+ if (GNUNET_SCHEDULER_NO_TASK != pi->connect_task)
+ {
+ GNUNET_free (GNUNET_SCHEDULER_cancel (pi->connect_task));
+ }
GNUNET_free (pi);
return GNUNET_OK;
}
path_info = GNUNET_malloc (sizeof (struct MeshPathInfo));
path_info->peer = peer;
path_info->t = t;
- GNUNET_SCHEDULER_add_now (&peer_info_connect_task, path_info);
+ peer->connect_task = GNUNET_SCHEDULER_add_now (&peer_info_connect_task,
+ path_info);
}