+
+static int
+process_downloads (void *cls, const char *subsystem, const char *name,
+ uint64_t value, int is_persistent)
+{
+ if ((value >= 2) && (learned_hostlist_downloaded == GNUNET_NO))
+ {
+ GNUNET_log (GNUNET_ERROR_TYPE_INFO,
+ "Peer has successfully downloaded advertised URI\n");
+ learned_hostlist_downloaded = GNUNET_YES;
+ if ((learned_hostlist_saved == GNUNET_YES) && (adv_sent == GNUNET_YES))
+ {
+ GNUNET_SCHEDULER_add_now (&do_shutdown, NULL);
+ }
+ }
+ return GNUNET_OK;
+}
+
+
+static void
+process_uris_recv_done (void *cls, int success)
+{
+ urisrecv_stat = NULL;
+}
+
+
+static int
+process_uris_recv (void *cls, const char *subsystem, const char *name,
+ uint64_t value, int is_persistent)
+{
+ if (((struct PeerContext *) cls == &learn_peer) && (value == 1) &&
+ (learned_hostlist_saved == GNUNET_NO))
+ {
+ GNUNET_log (GNUNET_ERROR_TYPE_INFO,
+ "Peer has successfully saved advertised URI\n");
+ learned_hostlist_saved = GNUNET_YES;
+ if ((learned_hostlist_downloaded == GNUNET_YES) && (adv_sent == GNUNET_YES))
+ shutdown_testcase ();
+ }
+ return GNUNET_OK;
+}
+
+
+static void
+process_adv_sent_done (void *cls, int success)
+{
+ advsent_stat = NULL;
+}
+
+
+static int
+process_adv_sent (void *cls, const char *subsystem, const char *name,
+ uint64_t value, int is_persistent)
+{
+ if ((value >= 1) && (adv_sent == GNUNET_NO))
+ {
+ GNUNET_log (GNUNET_ERROR_TYPE_INFO,
+ "Server has successfully sent advertisement\n");
+ adv_sent = GNUNET_YES;
+ if ((learned_hostlist_downloaded == GNUNET_YES) &&
+ (learned_hostlist_saved == GNUNET_YES))
+ shutdown_testcase ();
+ }
+ return GNUNET_OK;
+}
+
+