aboutsummaryrefslogtreecommitdiff
path: root/src/cadet/test_cadet_local.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/cadet/test_cadet_local.c')
-rw-r--r--src/cadet/test_cadet_local.c48
1 files changed, 22 insertions, 26 deletions
diff --git a/src/cadet/test_cadet_local.c b/src/cadet/test_cadet_local.c
index 42663b146..a17d8f1ab 100644
--- a/src/cadet/test_cadet_local.c
+++ b/src/cadet/test_cadet_local.c
@@ -42,9 +42,9 @@ static int result = GNUNET_OK;
42 42
43static int got_data = GNUNET_NO; 43static int got_data = GNUNET_NO;
44 44
45static struct GNUNET_SCHEDULER_Task * abort_task; 45static struct GNUNET_SCHEDULER_Task *abort_task;
46 46
47static struct GNUNET_SCHEDULER_Task * shutdown_task; 47static struct GNUNET_SCHEDULER_Task *connect_task;
48 48
49static struct GNUNET_CADET_TransmitHandle *mth; 49static struct GNUNET_CADET_TransmitHandle *mth;
50 50
@@ -68,20 +68,29 @@ do_shutdown (void *cls)
68 if (NULL != abort_task) 68 if (NULL != abort_task)
69 { 69 {
70 GNUNET_SCHEDULER_cancel (abort_task); 70 GNUNET_SCHEDULER_cancel (abort_task);
71 abort_task = NULL;
72 }
73 if (NULL != connect_task)
74 {
75 GNUNET_SCHEDULER_cancel (connect_task);
76 connect_task = NULL;
71 } 77 }
72 if (NULL != ch) 78 if (NULL != ch)
73 { 79 {
74 GNUNET_CADET_channel_destroy (ch); 80 GNUNET_CADET_channel_destroy (ch);
81 ch = NULL;
75 } 82 }
76 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Disconnect client 1\n"); 83 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Disconnect client 1\n");
77 if (NULL != cadet_peer_1) 84 if (NULL != cadet_peer_1)
78 { 85 {
79 GNUNET_CADET_disconnect (cadet_peer_1); 86 GNUNET_CADET_disconnect (cadet_peer_1);
87 cadet_peer_1 = NULL;
80 } 88 }
81 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Disconnect client 2\n"); 89 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Disconnect client 2\n");
82 if (NULL != cadet_peer_2) 90 if (NULL != cadet_peer_2)
83 { 91 {
84 GNUNET_CADET_disconnect (cadet_peer_2); 92 GNUNET_CADET_disconnect (cadet_peer_2);
93 cadet_peer_2 = NULL;
85 } 94 }
86} 95}
87 96
@@ -95,12 +104,7 @@ do_abort (void *cls)
95 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "ABORT\n"); 104 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "ABORT\n");
96 result = GNUNET_SYSERR; 105 result = GNUNET_SYSERR;
97 abort_task = NULL; 106 abort_task = NULL;
98 if (NULL != shutdown_task) 107 GNUNET_SCHEDULER_shutdown ();
99 {
100 GNUNET_SCHEDULER_cancel (shutdown_task);
101 shutdown_task = NULL;
102 }
103 do_shutdown (cls);
104} 108}
105 109
106 110
@@ -120,14 +124,10 @@ data_callback (void *cls, struct GNUNET_CADET_Channel *channel,
120 void **channel_ctx, 124 void **channel_ctx,
121 const struct GNUNET_MessageHeader *message) 125 const struct GNUNET_MessageHeader *message)
122{ 126{
123 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Data callback! Shutting down.\n"); 127 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
128 "Data callback! Shutting down.\n");
124 got_data = GNUNET_YES; 129 got_data = GNUNET_YES;
125 if (NULL != shutdown_task) 130 GNUNET_SCHEDULER_shutdown ();
126 GNUNET_SCHEDULER_cancel (shutdown_task);
127 shutdown_task =
128 GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_UNIT_SECONDS,
129 &do_shutdown,
130 NULL);
131 GNUNET_CADET_receive_done (channel); 131 GNUNET_CADET_receive_done (channel);
132 return GNUNET_OK; 132 return GNUNET_OK;
133} 133}
@@ -254,12 +254,8 @@ static void
254do_connect (void *cls) 254do_connect (void *cls)
255{ 255{
256 struct GNUNET_PeerIdentity id; 256 struct GNUNET_PeerIdentity id;
257 const struct GNUNET_SCHEDULER_TaskContext *tc;
258
259 tc = GNUNET_SCHEDULER_get_task_context ();
260 if (NULL != tc && 0 != (GNUNET_SCHEDULER_REASON_SHUTDOWN & tc->reason))
261 return;
262 257
258 connect_task = NULL;
263 GNUNET_TESTING_peer_get_identity (me, &id); 259 GNUNET_TESTING_peer_get_identity (me, &id);
264 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "CONNECT BY PORT\n"); 260 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "CONNECT BY PORT\n");
265 ch = GNUNET_CADET_channel_create (cadet_peer_1, NULL, &id, 1, 261 ch = GNUNET_CADET_channel_create (cadet_peer_1, NULL, &id, 1,
@@ -286,9 +282,11 @@ run (void *cls,
286 static uint32_t ports[] = {1, 0}; 282 static uint32_t ports[] = {1, 0};
287 283
288 me = peer; 284 me = peer;
285 GNUNET_SCHEDULER_add_shutdown (&do_shutdown, NULL);
289 abort_task = 286 abort_task =
290 GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_relative_multiply 287 GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_relative_multiply
291 (GNUNET_TIME_UNIT_SECONDS, 15), &do_abort, 288 (GNUNET_TIME_UNIT_SECONDS, 15),
289 &do_abort,
292 NULL); 290 NULL);
293 cadet_peer_1 = GNUNET_CADET_connect (cfg, /* configuration */ 291 cadet_peer_1 = GNUNET_CADET_connect (cfg, /* configuration */
294 (void *) 1L, /* cls */ 292 (void *) 1L, /* cls */
@@ -305,14 +303,12 @@ run (void *cls,
305 ports); /* ports offered */ 303 ports); /* ports offered */
306 if (NULL == cadet_peer_1 || NULL == cadet_peer_2) 304 if (NULL == cadet_peer_1 || NULL == cadet_peer_2)
307 { 305 {
308 GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Couldn't connect to cadet :(\n"); 306 GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
307 "Couldn't connect to cadet :(\n");
309 result = GNUNET_SYSERR; 308 result = GNUNET_SYSERR;
309 GNUNET_SCHEDULER_shutdown ();
310 return; 310 return;
311 } 311 }
312 else
313 {
314 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "YAY! CONNECTED TO CADET :D\n");
315 }
316 GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_relative_multiply ( 312 GNUNET_SCHEDULER_add_delayed (GNUNET_TIME_relative_multiply (
317 GNUNET_TIME_UNIT_SECONDS, 313 GNUNET_TIME_UNIT_SECONDS,
318 2), 314 2),