gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r16601 - gnunet/src/transport


From: gnunet
Subject: [GNUnet-SVN] r16601 - gnunet/src/transport
Date: Tue, 23 Aug 2011 13:02:19 +0200

Author: wachs
Date: 2011-08-23 13:02:19 +0200 (Tue, 23 Aug 2011)
New Revision: 16601

Modified:
   gnunet/src/transport/test_transport_api.c
Log:
improved shutdown


Modified: gnunet/src/transport/test_transport_api.c
===================================================================
--- gnunet/src/transport/test_transport_api.c   2011-08-23 11:01:52 UTC (rev 
16600)
+++ gnunet/src/transport/test_transport_api.c   2011-08-23 11:02:19 UTC (rev 
16601)
@@ -59,10 +59,14 @@
 
 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;
@@ -81,6 +85,9 @@
 {
   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);
 
@@ -93,14 +100,18 @@
 }
 
 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);
   th = NULL;
@@ -111,6 +122,7 @@
     GNUNET_TRANSPORT_TESTING_stop_peer (p2);
 
   ok = GNUNET_SYSERR;
+  GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Fail! Stopping peers END\n");
 }
 
 
@@ -180,8 +192,13 @@
 }
 
 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,
                                                &notify_ready, &p1);
 }
@@ -189,6 +206,7 @@
 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,
@@ -196,7 +214,8 @@
   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
@@ -211,8 +230,8 @@
   p2 = GNUNET_TRANSPORT_TESTING_start_peer (cfg_file_p2, &notify_receive,
                                             &notify_connect, 
&notify_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
@@ -233,6 +252,8 @@
 #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);




reply via email to

[Prev in Thread] Current Thread [Next in Thread]