/*
This file is part of GNUnet.
- (C) 2004, 2005, 2006, 2008, 2009 Christian Grothoff (and other contributing authors)
+ (C) 2004-2013 Christian Grothoff (and other contributing authors)
GNUnet is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
*/
#include "platform.h"
#include "gnunet_util_lib.h"
-#include "gnunet_testing_lib-new.h"
+#include "gnunet_testing_lib.h"
#include "gnunet_fs_service.h"
static struct GNUNET_FS_PublishContext *publish;
+static GNUNET_SCHEDULER_TaskIdentifier timeout_task;
+
+static int err;
+
static void
abort_publish_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
+{
+ if (NULL != publish)
+ {
+ GNUNET_FS_publish_stop (publish);
+ publish = NULL;
+ }
+ if (GNUNET_SCHEDULER_NO_TASK != timeout_task)
+ {
+ GNUNET_SCHEDULER_cancel (timeout_task);
+ timeout_task = GNUNET_SCHEDULER_NO_TASK;
+ }
+}
+
+
+static void
+abort_error (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
{
- GNUNET_FS_publish_stop (publish);
- publish = NULL;
+ fprintf (stderr,
+ "Timeout\n");
+ timeout_task = GNUNET_SCHEDULER_NO_TASK;
+ if (NULL != search)
+ {
+ GNUNET_FS_search_stop (search);
+ search = NULL;
+ }
+ if (NULL != publish)
+ {
+ GNUNET_FS_publish_stop (publish);
+ publish = NULL;
+ }
+ err = 1;
}
static void
abort_search_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
{
- if (search != NULL)
+ if (NULL != search)
+ {
GNUNET_FS_search_stop (search);
- search = NULL;
+ search = NULL;
+ }
}
static void
run (void *cls,
- const struct GNUNET_CONFIGURATION_Handle *cfg)
+ const struct GNUNET_CONFIGURATION_Handle *cfg,
+ struct GNUNET_TESTING_Peer *peer)
{
const char *keywords[] = {
"down_foo",
GNUNET_FS_publish_start (fs, fi, NULL, NULL, NULL,
GNUNET_FS_PUBLISH_OPTION_NONE);
GNUNET_assert (publish != NULL);
+ timeout_task = GNUNET_SCHEDULER_add_delayed (LIFETIME,
+ &abort_error, NULL);
}
"test_fs_search_data.conf",
&run, NULL))
return 1;
- return 0;
+ return err;
}
/* end of test_fs_search.c */