don't run set with valgrind per default
[oweals/gnunet.git] / src / conversation / test_conversation_api_twocalls.c
index 17a12eb4f35821a3ad1d90878810bbb2970ed3f5..7d2705e705ee94ab2e77663123ffb5cfe213aaf3 100644 (file)
@@ -73,7 +73,9 @@ static GNUNET_MICROPHONE_RecordedDataCallback phone_rdc;
 
 static void *phone_rdc_cls;
 
-static struct GNUNET_SCHEDULER_Task * phone_task;
+static struct GNUNET_SCHEDULER_Task *phone_task;
+
+static struct GNUNET_SCHEDULER_Task *timeout_task;
 
 /**
  * Variable for recognizing caller1
@@ -185,7 +187,8 @@ play (void *cls,
     phone_i++;
   else
   {
-    LOG_DEBUG ("Received unexpected data %.*s\n",
+    LOG_DEBUG ("Received %u bytes of unexpected data `%.*s'\n",
+               (unsigned int) data_size,
                (int) data_size,
                (const char *) data);
   }
@@ -338,14 +341,33 @@ static struct GNUNET_MICROPHONE_Handle phone_mic = {
 
 
 /**
- * Signature of the main function of a task.
+ * Function run on timeout.
  *
  * @param cls closure
  */
 static void
 end_test (void *cls)
 {
+  timeout_task = NULL;
+  fprintf (stderr,
+           "Timeout!\n");
   GNUNET_SCHEDULER_shutdown ();
+}
+
+
+/**
+ * Function run on shutdown.
+ *
+ * @param cls closure
+ */
+static void
+do_shutdown (void *cls)
+{
+  if (NULL != timeout_task)
+  {
+    GNUNET_SCHEDULER_cancel (timeout_task);
+    timeout_task = NULL;
+  }
   if (NULL != op)
   {
     GNUNET_IDENTITY_cancel (op);
@@ -485,6 +507,11 @@ call_event_handler (void *cls,
     break;
   case GNUNET_CONVERSATION_EC_CALL_ERROR:
     GNUNET_break (0);
+    if (0 == strcmp (cid, "call1"))
+      call1 = NULL;
+    else
+      call2 = NULL;
+    GNUNET_SCHEDULER_shutdown ();
     break;
   }
 }
@@ -592,8 +619,11 @@ run (void *cls,
      struct GNUNET_TESTING_Peer *peer)
 {
   cfg = c;
-  GNUNET_SCHEDULER_add_delayed (TIMEOUT, &end_test,
-                                NULL);
+  timeout_task = GNUNET_SCHEDULER_add_delayed (TIMEOUT,
+                                               &end_test,
+                                               NULL);
+  GNUNET_SCHEDULER_add_shutdown (&do_shutdown,
+                                 NULL);
   id = GNUNET_IDENTITY_connect (cfg,
                                 &identity_cb,
                                 NULL);