static GNUNET_SCHEDULER_TaskIdentifier measure_task;
+static GNUNET_SCHEDULER_TaskIdentifier connect_task;
+
struct PeerContext
{
GNUNET_CORE_notify_transmit_ready_cancel (p1.nth);
p1.nth = NULL;
}
+ if (connect_task != GNUNET_SCHEDULER_NO_TASK)
+ GNUNET_SCHEDULER_cancel (connect_task);
ch = p1.ch;
p1.ch = NULL;
GNUNET_CORE_disconnect (ch);
}
if (measure_task != GNUNET_SCHEDULER_NO_TASK)
GNUNET_SCHEDULER_cancel (measure_task);
+ if (connect_task != GNUNET_SCHEDULER_NO_TASK)
+ GNUNET_SCHEDULER_cancel (connect_task);
GNUNET_TRANSPORT_get_hello_cancel (p1.ghh);
GNUNET_TRANSPORT_get_hello_cancel (p2.ghh);
}
+static void
+try_connect (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
+{
+ connect_task = GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_SECONDS,
+ &try_connect, NULL);
+ GNUNET_TRANSPORT_try_connect (p1.th, &p2.id);
+ GNUNET_TRANSPORT_try_connect (p2.th, &p1.id);
+}
+
/**
* Callback function to process statistic values.
*
"Asking core (1) to connect to peer `%4s'\n",
GNUNET_i2s (&p2.id));
#endif
- GNUNET_TRANSPORT_try_connect (p1.th, &p2.id);
- GNUNET_TRANSPORT_try_connect (p2.th, &p1.id);
+ connect_task = GNUNET_SCHEDULER_add_now (&try_connect,
+ NULL);
}
}