static GNUNET_SCHEDULER_TaskIdentifier die_task;
+static GNUNET_SCHEDULER_TaskIdentifier send_task;
+
struct PeerContext *p1;
struct PeerContext *p2;
+static GNUNET_TRANSPORT_TESTING_ConnectRequest cc;
+
struct GNUNET_TRANSPORT_TransmitHandle *th;
char *cfg_file_p1;
{
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Stopping peers\n");
+ if (send_task != GNUNET_SCHEDULER_NO_TASK)
+ GNUNET_SCHEDULER_cancel (send_task);
+
if (die_task != GNUNET_SCHEDULER_NO_TASK)
GNUNET_SCHEDULER_cancel (die_task);
}
static void
-end_badly ()
+end_badly (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
{
- if (die_task != GNUNET_SCHEDULER_NO_TASK)
- GNUNET_SCHEDULER_cancel (die_task);
-
die_task = GNUNET_SCHEDULER_NO_TASK;
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Fail! Stopping peers\n");
+
+ GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Fail! Stopping peers\n");
+
+ if (send_task != GNUNET_SCHEDULER_NO_TASK)
+ GNUNET_SCHEDULER_cancel (send_task);
+
+ if (cc != NULL)
+ GNUNET_TRANSPORT_TESTING_connect_peers_cancel(cc);
if (th != NULL)
GNUNET_TRANSPORT_notify_transmit_ready_cancel (th);
GNUNET_TRANSPORT_TESTING_stop_peer (p2);
ok = GNUNET_SYSERR;
+ GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Fail! Stopping peers END\n");
}
}
static void
-sendtask ()
+sendtask (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
{
+ send_task = GNUNET_SCHEDULER_NO_TASK;
+
+ if ((tc->reason & GNUNET_SCHEDULER_REASON_SHUTDOWN) != 0)
+ return;
+
th = GNUNET_TRANSPORT_notify_transmit_ready (p1->th, &p2->id, 256, 0, TIMEOUT,
¬ify_ready, &p1);
}
static void
testing_connect_cb (struct PeerContext *p1, struct PeerContext *p2, void *cls)
{
+ cc = NULL;
char *p1_c = strdup (GNUNET_i2s (&p1->id));
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Peers connected: %s <-> %s\n", p1_c,
GNUNET_free (p1_c);
// FIXME: THIS IS REQUIRED! SEEMS TO BE A BUG!
- GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_SECONDS, &sendtask, NULL);
+ send_task =
+ GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_SECONDS, &sendtask, NULL);
}
static void
p2 = GNUNET_TRANSPORT_TESTING_start_peer (cfg_file_p2, ¬ify_receive,
¬ify_connect, ¬ify_disconnect,
NULL);
-
- GNUNET_TRANSPORT_TESTING_connect_peers (p1, p2, &testing_connect_cb, NULL);
+ GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "NOW!\n");
+ cc = GNUNET_TRANSPORT_TESTING_connect_peers (p1, p2, &testing_connect_cb, NULL);
}
static int
#if WRITECONFIG
setTransportOptions ("test_transport_api_data.conf");
#endif
+ send_task = GNUNET_SCHEDULER_NO_TASK;
+
ok = 1;
GNUNET_PROGRAM_run ((sizeof (argv) / sizeof (char *)) - 1, argv,
"test-transport-api", "nohelp", options, &run, &ok);