/** * Task run during shutdown. * * @param cls unused * @param tc unused */ static void cleanup_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) { struct ClientPeerContext *cp; cp = cp_head; while (NULL != cp) { GNUNET_CONTAINER_DLL_remove (cp_head, cp_tail, cp); destroy_clientpeer (cp); cp = cp_head; } if (NULL != cadet) { GNUNET_CADET_disconnect (cadet); cadet = NULL; } if (NULL != peerstore) { GNUNET_PEERSTORE_disconnect (peerstore, GNUNET_YES); peerstore = NULL; } GNUNET_SENSOR_destroy_sensors (sensors); if (NULL != sensor_dir) { GNUNET_free (sensor_dir); sensor_dir = NULL; } GNUNET_SCHEDULER_shutdown (); }
/** * Shutdown nicely * * @param cls closure, NULL */ static void do_shutdown (void *cls) { if (NULL != cadet) { GNUNET_CADET_disconnect (cadet); cadet = NULL; } }
/** * Shutdown nicely */ static void do_shutdown (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) { GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "shutdown\n"); if (NULL != abort_task) { GNUNET_SCHEDULER_cancel (abort_task); } if (NULL != ch) { GNUNET_CADET_channel_destroy (ch); } GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Disconnect client 1\n"); if (NULL != cadet_peer_1) { GNUNET_CADET_disconnect (cadet_peer_1); } GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Disconnect client 2\n"); if (NULL != cadet_peer_2) { GNUNET_CADET_disconnect (cadet_peer_2); } }
/** * Task run during shutdown. * * @param cls unused */ static void shutdown_task (void *cls) { GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Shutting down, initiating cleanup.\n"); // FIXME: we have to cut our connections to CADET first! if (NULL != my_cadet) { GNUNET_CADET_disconnect (my_cadet); my_cadet = NULL; } if (NULL != edc) { GNUNET_CRYPTO_ecc_dlog_release (edc); edc = NULL; } GNUNET_CONTAINER_multihashmap_destroy (client_sessions); client_sessions = NULL; GNUNET_CONTAINER_multihashmap_destroy (cadet_sessions); cadet_sessions = NULL; }