gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] r37391 - gnunet/src/conversation


From: gnunet
Subject: [GNUnet-SVN] r37391 - gnunet/src/conversation
Date: Mon, 27 Jun 2016 15:48:21 +0200

Author: grothoff
Date: 2016-06-27 15:48:21 +0200 (Mon, 27 Jun 2016)
New Revision: 37391

Modified:
   gnunet/src/conversation/conversation_api_call.c
   gnunet/src/conversation/test_conversation_api.c
   gnunet/src/conversation/test_conversation_api_twocalls.c
Log:
handle failures more gracefully in test

Modified: gnunet/src/conversation/conversation_api_call.c
===================================================================
--- gnunet/src/conversation/conversation_api_call.c     2016-06-27 12:37:45 UTC 
(rev 37390)
+++ gnunet/src/conversation/conversation_api_call.c     2016-06-27 13:48:21 UTC 
(rev 37391)
@@ -154,7 +154,7 @@
  * @param call call to reconnect
  */
 static void
-reconnect_call (struct GNUNET_CONVERSATION_Call *call);
+fail_call (struct GNUNET_CONVERSATION_Call *call);
 
 
 /**
@@ -198,11 +198,11 @@
   {
   case CS_LOOKUP:
     GNUNET_break (0);
-    reconnect_call (call);
+    fail_call (call);
     break;
   case CS_RINGING:
     GNUNET_break_op (0);
-    reconnect_call (call);
+    fail_call (call);
     break;
   case CS_SUSPENDED_CALLER:
     call->state = CS_SUSPENDED_BOTH;
@@ -243,11 +243,11 @@
   {
   case CS_LOOKUP:
     GNUNET_break (0);
-    reconnect_call (call);
+    fail_call (call);
     break;
   case CS_RINGING:
     GNUNET_break_op (0);
-    reconnect_call (call);
+    fail_call (call);
     break;
   case CS_SUSPENDED_CALLER:
     GNUNET_break_op (0);
@@ -292,7 +292,7 @@
   {
   case CS_LOOKUP:
     GNUNET_break (0);
-    reconnect_call (call);
+    fail_call (call);
     break;
   case CS_RINGING:
     call->state = CS_ACTIVE;
@@ -308,7 +308,7 @@
   case CS_SUSPENDED_BOTH:
   case CS_ACTIVE:
     GNUNET_break (0);
-    reconnect_call (call);
+    fail_call (call);
     break;
   case CS_SHUTDOWN:
     GNUNET_CONVERSATION_call_stop (call);
@@ -335,7 +335,7 @@
   {
   case CS_LOOKUP:
     GNUNET_break (0);
-    reconnect_call (call);
+    fail_call (call);
     break;
   case CS_RINGING:
   case CS_SUSPENDED_CALLER:
@@ -386,11 +386,11 @@
   {
   case CS_LOOKUP:
     GNUNET_break (0);
-    reconnect_call (call);
+    fail_call (call);
     break;
   case CS_RINGING:
     GNUNET_break (0);
-    reconnect_call (call);
+    fail_call (call);
     break;
   case CS_SUSPENDED_CALLER:
     /* can happen: we suspended, other peer did not yet
@@ -482,17 +482,17 @@
   }
   GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
               _("Connection to conversation service lost, trying to 
reconnect\n"));
-  reconnect_call (call);
+  fail_call (call);
 }
 
 
 /**
- * The call got disconnected, reconnect to the service.
+ * The call got disconnected, destroy the handle.
  *
  * @param call call to reconnect
  */
 static void
-reconnect_call (struct GNUNET_CONVERSATION_Call *call)
+fail_call (struct GNUNET_CONVERSATION_Call *call)
 {
   if (CS_ACTIVE == call->state)
   {

Modified: gnunet/src/conversation/test_conversation_api.c
===================================================================
--- gnunet/src/conversation/test_conversation_api.c     2016-06-27 12:37:45 UTC 
(rev 37390)
+++ gnunet/src/conversation/test_conversation_api.c     2016-06-27 13:48:21 UTC 
(rev 37391)
@@ -67,9 +67,9 @@
 
 static void *call_rdc_cls;
 
-static struct GNUNET_SCHEDULER_Task * phone_task;
+static struct GNUNET_SCHEDULER_Task *phone_task;
 
-static struct GNUNET_SCHEDULER_Task * call_task;
+static struct GNUNET_SCHEDULER_Task *call_task;
 
 
 static void
@@ -347,11 +347,14 @@
   case GNUNET_CONVERSATION_EC_PHONE_HUNG_UP:
     GNUNET_break (caller == active_caller);
     active_caller = NULL;
-    ok = 0;
+    if (1 == ok)
+      ok = 0;
     GNUNET_SCHEDULER_shutdown ();
     break;
   default:
-    fprintf (stderr, "Unexpected phone code: %d\n", code);
+    fprintf (stderr,
+             "Unexpected phone code: %d\n",
+             code);
     break;
   }
 }
@@ -376,12 +379,21 @@
   case GNUNET_CONVERSATION_EC_CALL_GNS_FAIL:
   case GNUNET_CONVERSATION_EC_CALL_HUNG_UP:
     call = NULL;
+    ok = 2;
+    GNUNET_break (0);
     fprintf (stderr, "Unexpected call code: %d\n", code);
     break;
   case GNUNET_CONVERSATION_EC_CALL_SUSPENDED:
   case GNUNET_CONVERSATION_EC_CALL_RESUMED:
+    GNUNET_break (0);
+    fprintf (stderr, "Unexpected call code: %d\n", code);
+    ok = 2;
+    break;
   case GNUNET_CONVERSATION_EC_CALL_ERROR:
+    GNUNET_break (0);
     fprintf (stderr, "Unexpected call code: %d\n", code);
+    call = NULL;
+    ok = 2;
     break;
   }
 }

Modified: gnunet/src/conversation/test_conversation_api_twocalls.c
===================================================================
--- gnunet/src/conversation/test_conversation_api_twocalls.c    2016-06-27 
12:37:45 UTC (rev 37390)
+++ gnunet/src/conversation/test_conversation_api_twocalls.c    2016-06-27 
13:48:21 UTC (rev 37391)
@@ -73,8 +73,10 @@
 
 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
  */
@@ -338,7 +340,7 @@
 
 
 /**
- * Signature of the main function of a task.
+ * Function run on timeout.
  *
  * @param cls closure
  */
@@ -345,7 +347,26 @@
 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 +506,11 @@
     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 +618,11 @@
      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);




reply via email to

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