aboutsummaryrefslogtreecommitdiff
path: root/src/transport/transport-testing.c
diff options
context:
space:
mode:
authorMatthias Wachs <wachs@net.in.tum.de>2011-08-23 11:01:52 +0000
committerMatthias Wachs <wachs@net.in.tum.de>2011-08-23 11:01:52 +0000
commitde05ba3f3d7251d17129a3781b67b7a09654b648 (patch)
treedc04f628f48604f50cf701b171399afa3f7b62e7 /src/transport/transport-testing.c
parent6aae69bbb5a389a2e47478b46fa1d5620c2cfbcd (diff)
downloadgnunet-de05ba3f3d7251d17129a3781b67b7a09654b648.tar.gz
gnunet-de05ba3f3d7251d17129a3781b67b7a09654b648.zip
improved shutdown
Diffstat (limited to 'src/transport/transport-testing.c')
-rw-r--r--src/transport/transport-testing.c37
1 files changed, 35 insertions, 2 deletions
diff --git a/src/transport/transport-testing.c b/src/transport/transport-testing.c
index 0c628a731..18a002d02 100644
--- a/src/transport/transport-testing.c
+++ b/src/transport/transport-testing.c
@@ -246,6 +246,7 @@ GNUNET_TRANSPORT_TESTING_start_peer (const char *cfgname,
246void 246void
247GNUNET_TRANSPORT_TESTING_stop_peer (struct PeerContext *p) 247GNUNET_TRANSPORT_TESTING_stop_peer (struct PeerContext *p)
248{ 248{
249 GNUNET_assert (p != NULL);
249 if (p->th != NULL) 250 if (p->th != NULL)
250 GNUNET_TRANSPORT_disconnect (p->th); 251 GNUNET_TRANSPORT_disconnect (p->th);
251 252
@@ -257,12 +258,15 @@ GNUNET_TRANSPORT_TESTING_stop_peer (struct PeerContext *p)
257 GNUNET_OS_process_close (p->arm_proc); 258 GNUNET_OS_process_close (p->arm_proc);
258 p->arm_proc = NULL; 259 p->arm_proc = NULL;
259 } 260 }
260 GNUNET_CONFIGURATION_destroy (p->cfg);
261 if (p->servicehome != NULL) 261 if (p->servicehome != NULL)
262 { 262 {
263 GNUNET_DISK_directory_remove (p->servicehome); 263 GNUNET_DISK_directory_remove (p->servicehome);
264 GNUNET_free (p->servicehome); 264 GNUNET_free (p->servicehome);
265 } 265 }
266
267 if (p->cfg != NULL)
268 GNUNET_CONFIGURATION_destroy (p->cfg);
269
266 GNUNET_free (p); 270 GNUNET_free (p);
267} 271}
268 272
@@ -274,8 +278,9 @@ GNUNET_TRANSPORT_TESTING_stop_peer (struct PeerContext *p)
274 * @param p2 peer 2 278 * @param p2 peer 2
275 * @param cb the callback to call 279 * @param cb the callback to call
276 * @param cb_cls callback cls 280 * @param cb_cls callback cls
281 * @return connect context
277 */ 282 */
278void 283GNUNET_TRANSPORT_TESTING_ConnectRequest
279GNUNET_TRANSPORT_TESTING_connect_peers (struct PeerContext *p1, 284GNUNET_TRANSPORT_TESTING_connect_peers (struct PeerContext *p1,
280 struct PeerContext *p2, 285 struct PeerContext *p2,
281 GNUNET_TRANSPORT_TESTING_connect_cb cb, 286 GNUNET_TRANSPORT_TESTING_connect_cb cb,
@@ -308,8 +313,36 @@ GNUNET_TRANSPORT_TESTING_connect_peers (struct PeerContext *p1,
308 GNUNET_TRANSPORT_get_hello (cc->th_p2, &exchange_hello_last, cc); 313 GNUNET_TRANSPORT_get_hello (cc->th_p2, &exchange_hello_last, cc);
309 314
310 cc->tct = GNUNET_SCHEDULER_add_now (&try_connect, cc); 315 cc->tct = GNUNET_SCHEDULER_add_now (&try_connect, cc);
316 return cc;
311} 317}
312 318
319/**
320 * Cancels a peer connect request
321 * before.
322 * @param p1 peer 1
323 * @param p2 peer 2
324 * @param cb the callback to call
325 * @param cb_cls callback cls
326 * @return connect context
327 */
328void
329GNUNET_TRANSPORT_TESTING_connect_peers_cancel (GNUNET_TRANSPORT_TESTING_ConnectRequest ccr)
330{
331 struct ConnectingContext *cc = ccr;
332 /* clean up */
333 GNUNET_TRANSPORT_get_hello_cancel (cc->th_p2, &exchange_hello_last, cc);
334 GNUNET_TRANSPORT_get_hello_cancel (cc->th_p1, &exchange_hello, cc);
335
336 if (cc->tct != GNUNET_SCHEDULER_NO_TASK)
337 GNUNET_SCHEDULER_cancel (cc->tct);
338
339 cc->tct = GNUNET_SCHEDULER_NO_TASK;
340
341 GNUNET_TRANSPORT_disconnect (cc->th_p1);
342 GNUNET_TRANSPORT_disconnect (cc->th_p2);
343
344 GNUNET_free (cc);
345}
313 346
314 347
315/* end of transport_testing.h */ 348/* end of transport_testing.h */