diff options
author | Matthias Wachs <wachs@net.in.tum.de> | 2011-08-23 11:01:52 +0000 |
---|---|---|
committer | Matthias Wachs <wachs@net.in.tum.de> | 2011-08-23 11:01:52 +0000 |
commit | de05ba3f3d7251d17129a3781b67b7a09654b648 (patch) | |
tree | dc04f628f48604f50cf701b171399afa3f7b62e7 /src/transport/transport-testing.c | |
parent | 6aae69bbb5a389a2e47478b46fa1d5620c2cfbcd (diff) | |
download | gnunet-de05ba3f3d7251d17129a3781b67b7a09654b648.tar.gz gnunet-de05ba3f3d7251d17129a3781b67b7a09654b648.zip |
improved shutdown
Diffstat (limited to 'src/transport/transport-testing.c')
-rw-r--r-- | src/transport/transport-testing.c | 37 |
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, | |||
246 | void | 246 | void |
247 | GNUNET_TRANSPORT_TESTING_stop_peer (struct PeerContext *p) | 247 | GNUNET_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 | */ |
278 | void | 283 | GNUNET_TRANSPORT_TESTING_ConnectRequest |
279 | GNUNET_TRANSPORT_TESTING_connect_peers (struct PeerContext *p1, | 284 | GNUNET_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 | */ | ||
328 | void | ||
329 | GNUNET_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 */ |