aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/conversation/conversation_api_call.c26
-rw-r--r--src/conversation/test_conversation_api.c20
-rw-r--r--src/conversation/test_conversation_api_twocalls.c37
3 files changed, 62 insertions, 21 deletions
diff --git a/src/conversation/conversation_api_call.c b/src/conversation/conversation_api_call.c
index 728b495b3..ad83288b9 100644
--- a/src/conversation/conversation_api_call.c
+++ b/src/conversation/conversation_api_call.c
@@ -154,7 +154,7 @@ struct GNUNET_CONVERSATION_Call
154 * @param call call to reconnect 154 * @param call call to reconnect
155 */ 155 */
156static void 156static void
157reconnect_call (struct GNUNET_CONVERSATION_Call *call); 157fail_call (struct GNUNET_CONVERSATION_Call *call);
158 158
159 159
160/** 160/**
@@ -198,11 +198,11 @@ handle_call_suspend (void *cls,
198 { 198 {
199 case CS_LOOKUP: 199 case CS_LOOKUP:
200 GNUNET_break (0); 200 GNUNET_break (0);
201 reconnect_call (call); 201 fail_call (call);
202 break; 202 break;
203 case CS_RINGING: 203 case CS_RINGING:
204 GNUNET_break_op (0); 204 GNUNET_break_op (0);
205 reconnect_call (call); 205 fail_call (call);
206 break; 206 break;
207 case CS_SUSPENDED_CALLER: 207 case CS_SUSPENDED_CALLER:
208 call->state = CS_SUSPENDED_BOTH; 208 call->state = CS_SUSPENDED_BOTH;
@@ -243,11 +243,11 @@ handle_call_resume (void *cls,
243 { 243 {
244 case CS_LOOKUP: 244 case CS_LOOKUP:
245 GNUNET_break (0); 245 GNUNET_break (0);
246 reconnect_call (call); 246 fail_call (call);
247 break; 247 break;
248 case CS_RINGING: 248 case CS_RINGING:
249 GNUNET_break_op (0); 249 GNUNET_break_op (0);
250 reconnect_call (call); 250 fail_call (call);
251 break; 251 break;
252 case CS_SUSPENDED_CALLER: 252 case CS_SUSPENDED_CALLER:
253 GNUNET_break_op (0); 253 GNUNET_break_op (0);
@@ -292,7 +292,7 @@ handle_call_picked_up (void *cls,
292 { 292 {
293 case CS_LOOKUP: 293 case CS_LOOKUP:
294 GNUNET_break (0); 294 GNUNET_break (0);
295 reconnect_call (call); 295 fail_call (call);
296 break; 296 break;
297 case CS_RINGING: 297 case CS_RINGING:
298 call->state = CS_ACTIVE; 298 call->state = CS_ACTIVE;
@@ -308,7 +308,7 @@ handle_call_picked_up (void *cls,
308 case CS_SUSPENDED_BOTH: 308 case CS_SUSPENDED_BOTH:
309 case CS_ACTIVE: 309 case CS_ACTIVE:
310 GNUNET_break (0); 310 GNUNET_break (0);
311 reconnect_call (call); 311 fail_call (call);
312 break; 312 break;
313 case CS_SHUTDOWN: 313 case CS_SHUTDOWN:
314 GNUNET_CONVERSATION_call_stop (call); 314 GNUNET_CONVERSATION_call_stop (call);
@@ -335,7 +335,7 @@ handle_call_hangup (void *cls,
335 { 335 {
336 case CS_LOOKUP: 336 case CS_LOOKUP:
337 GNUNET_break (0); 337 GNUNET_break (0);
338 reconnect_call (call); 338 fail_call (call);
339 break; 339 break;
340 case CS_RINGING: 340 case CS_RINGING:
341 case CS_SUSPENDED_CALLER: 341 case CS_SUSPENDED_CALLER:
@@ -386,11 +386,11 @@ handle_call_audio (void *cls,
386 { 386 {
387 case CS_LOOKUP: 387 case CS_LOOKUP:
388 GNUNET_break (0); 388 GNUNET_break (0);
389 reconnect_call (call); 389 fail_call (call);
390 break; 390 break;
391 case CS_RINGING: 391 case CS_RINGING:
392 GNUNET_break (0); 392 GNUNET_break (0);
393 reconnect_call (call); 393 fail_call (call);
394 break; 394 break;
395 case CS_SUSPENDED_CALLER: 395 case CS_SUSPENDED_CALLER:
396 /* can happen: we suspended, other peer did not yet 396 /* can happen: we suspended, other peer did not yet
@@ -482,17 +482,17 @@ call_error_handler (void *cls,
482 } 482 }
483 GNUNET_log (GNUNET_ERROR_TYPE_WARNING, 483 GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
484 _("Connection to conversation service lost, trying to reconnect\n")); 484 _("Connection to conversation service lost, trying to reconnect\n"));
485 reconnect_call (call); 485 fail_call (call);
486} 486}
487 487
488 488
489/** 489/**
490 * The call got disconnected, reconnect to the service. 490 * The call got disconnected, destroy the handle.
491 * 491 *
492 * @param call call to reconnect 492 * @param call call to reconnect
493 */ 493 */
494static void 494static void
495reconnect_call (struct GNUNET_CONVERSATION_Call *call) 495fail_call (struct GNUNET_CONVERSATION_Call *call)
496{ 496{
497 if (CS_ACTIVE == call->state) 497 if (CS_ACTIVE == call->state)
498 { 498 {
diff --git a/src/conversation/test_conversation_api.c b/src/conversation/test_conversation_api.c
index f8159115b..fd9327805 100644
--- a/src/conversation/test_conversation_api.c
+++ b/src/conversation/test_conversation_api.c
@@ -67,9 +67,9 @@ static GNUNET_MICROPHONE_RecordedDataCallback call_rdc;
67 67
68static void *call_rdc_cls; 68static void *call_rdc_cls;
69 69
70static struct GNUNET_SCHEDULER_Task * phone_task; 70static struct GNUNET_SCHEDULER_Task *phone_task;
71 71
72static struct GNUNET_SCHEDULER_Task * call_task; 72static struct GNUNET_SCHEDULER_Task *call_task;
73 73
74 74
75static void 75static void
@@ -347,11 +347,14 @@ phone_event_handler (void *cls,
347 case GNUNET_CONVERSATION_EC_PHONE_HUNG_UP: 347 case GNUNET_CONVERSATION_EC_PHONE_HUNG_UP:
348 GNUNET_break (caller == active_caller); 348 GNUNET_break (caller == active_caller);
349 active_caller = NULL; 349 active_caller = NULL;
350 ok = 0; 350 if (1 == ok)
351 ok = 0;
351 GNUNET_SCHEDULER_shutdown (); 352 GNUNET_SCHEDULER_shutdown ();
352 break; 353 break;
353 default: 354 default:
354 fprintf (stderr, "Unexpected phone code: %d\n", code); 355 fprintf (stderr,
356 "Unexpected phone code: %d\n",
357 code);
355 break; 358 break;
356 } 359 }
357} 360}
@@ -376,12 +379,21 @@ call_event_handler (void *cls,
376 case GNUNET_CONVERSATION_EC_CALL_GNS_FAIL: 379 case GNUNET_CONVERSATION_EC_CALL_GNS_FAIL:
377 case GNUNET_CONVERSATION_EC_CALL_HUNG_UP: 380 case GNUNET_CONVERSATION_EC_CALL_HUNG_UP:
378 call = NULL; 381 call = NULL;
382 ok = 2;
383 GNUNET_break (0);
379 fprintf (stderr, "Unexpected call code: %d\n", code); 384 fprintf (stderr, "Unexpected call code: %d\n", code);
380 break; 385 break;
381 case GNUNET_CONVERSATION_EC_CALL_SUSPENDED: 386 case GNUNET_CONVERSATION_EC_CALL_SUSPENDED:
382 case GNUNET_CONVERSATION_EC_CALL_RESUMED: 387 case GNUNET_CONVERSATION_EC_CALL_RESUMED:
388 GNUNET_break (0);
389 fprintf (stderr, "Unexpected call code: %d\n", code);
390 ok = 2;
391 break;
383 case GNUNET_CONVERSATION_EC_CALL_ERROR: 392 case GNUNET_CONVERSATION_EC_CALL_ERROR:
393 GNUNET_break (0);
384 fprintf (stderr, "Unexpected call code: %d\n", code); 394 fprintf (stderr, "Unexpected call code: %d\n", code);
395 call = NULL;
396 ok = 2;
385 break; 397 break;
386 } 398 }
387} 399}
diff --git a/src/conversation/test_conversation_api_twocalls.c b/src/conversation/test_conversation_api_twocalls.c
index 17a12eb4f..2e2a73e3f 100644
--- a/src/conversation/test_conversation_api_twocalls.c
+++ b/src/conversation/test_conversation_api_twocalls.c
@@ -73,7 +73,9 @@ static GNUNET_MICROPHONE_RecordedDataCallback phone_rdc;
73 73
74static void *phone_rdc_cls; 74static void *phone_rdc_cls;
75 75
76static struct GNUNET_SCHEDULER_Task * phone_task; 76static struct GNUNET_SCHEDULER_Task *phone_task;
77
78static struct GNUNET_SCHEDULER_Task *timeout_task;
77 79
78/** 80/**
79 * Variable for recognizing caller1 81 * Variable for recognizing caller1
@@ -338,14 +340,33 @@ static struct GNUNET_MICROPHONE_Handle phone_mic = {
338 340
339 341
340/** 342/**
341 * Signature of the main function of a task. 343 * Function run on timeout.
342 * 344 *
343 * @param cls closure 345 * @param cls closure
344 */ 346 */
345static void 347static void
346end_test (void *cls) 348end_test (void *cls)
347{ 349{
350 timeout_task = NULL;
351 fprintf (stderr,
352 "Timeout!\n");
348 GNUNET_SCHEDULER_shutdown (); 353 GNUNET_SCHEDULER_shutdown ();
354}
355
356
357/**
358 * Function run on shutdown.
359 *
360 * @param cls closure
361 */
362static void
363do_shutdown (void *cls)
364{
365 if (NULL != timeout_task)
366 {
367 GNUNET_SCHEDULER_cancel (timeout_task);
368 timeout_task = NULL;
369 }
349 if (NULL != op) 370 if (NULL != op)
350 { 371 {
351 GNUNET_IDENTITY_cancel (op); 372 GNUNET_IDENTITY_cancel (op);
@@ -485,6 +506,11 @@ call_event_handler (void *cls,
485 break; 506 break;
486 case GNUNET_CONVERSATION_EC_CALL_ERROR: 507 case GNUNET_CONVERSATION_EC_CALL_ERROR:
487 GNUNET_break (0); 508 GNUNET_break (0);
509 if (0 == strcmp (cid, "call1"))
510 call1 = NULL;
511 else
512 call2 = NULL;
513 GNUNET_SCHEDULER_shutdown ();
488 break; 514 break;
489 } 515 }
490} 516}
@@ -592,8 +618,11 @@ run (void *cls,
592 struct GNUNET_TESTING_Peer *peer) 618 struct GNUNET_TESTING_Peer *peer)
593{ 619{
594 cfg = c; 620 cfg = c;
595 GNUNET_SCHEDULER_add_delayed (TIMEOUT, &end_test, 621 timeout_task = GNUNET_SCHEDULER_add_delayed (TIMEOUT,
596 NULL); 622 &end_test,
623 NULL);
624 GNUNET_SCHEDULER_add_shutdown (&do_shutdown,
625 NULL);
597 id = GNUNET_IDENTITY_connect (cfg, 626 id = GNUNET_IDENTITY_connect (cfg,
598 &identity_cb, 627 &identity_cb,
599 NULL); 628 NULL);