* @param tc scheduler context (unused)
*/
static void
-report_uri (void *cls,
+report_uri (void *cls,
const struct GNUNET_SCHEDULER_TaskContext *tc)
{
struct TestPublishOperation *po = cls;
GNUNET_FS_publish_stop (po->publish_context);
GNUNET_TESTBED_operation_done (po->fs_op);
- po->publish_cont (po->publish_cont_cls, po->publish_uri);
+ po->publish_cont (po->publish_cont_cls,
+ po->publish_uri,
+ (GNUNET_YES == po->do_index)
+ ? po->publish_tmp_file
+ : NULL);
GNUNET_FS_uri_destroy (po->publish_uri);
+ if (GNUNET_YES != po->do_index)
+ (void) GNUNET_DISK_directory_remove (po->publish_tmp_file);
GNUNET_free_non_null (po->publish_tmp_file);
GNUNET_free (po);
}
po->publish_timeout_task = GNUNET_SCHEDULER_NO_TASK;
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
"Timeout while trying to publish data\n");
- if (NULL == po->fs)
- GNUNET_TESTBED_operation_cancel (po->fs_op);
- else
- GNUNET_TESTBED_operation_done (po->fs_op);
- GNUNET_FS_publish_stop (po->publish_context);
GNUNET_TESTBED_operation_done (po->fs_op);
- po->publish_cont (po->publish_cont_cls, NULL);
+ GNUNET_FS_publish_stop (po->publish_context);
+ po->publish_cont (po->publish_cont_cls, NULL, NULL);
+ (void) GNUNET_DISK_directory_remove (po->publish_tmp_file);
GNUNET_free_non_null (po->publish_tmp_file);
GNUNET_free (po);
}
* @param cls pointer to uint32_t with publishing seed
* @param offset offset to generate data for
* @param max maximum number of bytes to generate
- * @param buf where to write generated data
+ * @param buf where to write generated data
* @param emsg where to store error message (unused)
* @return number of bytes written to buf
*/
static size_t
-file_generator (void *cls,
+file_generator (void *cls,
uint64_t offset,
- size_t max,
- void *buf,
+ size_t max,
+ void *buf,
char **emsg)
{
uint32_t *publish_seed = cls;
/**
* Connect adapter for publishing operation.
- *
+ *
* @param cls the 'struct TestPublishOperation'
* @param cfg configuration of the peer to connect to; will be available until
* GNUNET_TESTBED_operation_done() is called on the operation returned
const struct GNUNET_CONFIGURATION_Handle *cfg)
{
struct TestPublishOperation *po = cls;
-
+
return GNUNET_FS_start (cfg,
"fs-test-publish",
&publish_progress_cb, po,
/**
* Adapter function called to destroy connection to file-sharing service.
- *
+ *
* @param cls the 'struct GNUNET_FS_Handle'
* @param op_result unused (different for publish/download!)
*/
-static void
+static void
fs_disconnect_adapter (void *cls,
void *op_result)
{
{
GNUNET_log (GNUNET_ERROR_TYPE_ERROR, "Failed to connect to FS for publishing: %s\n", emsg);
po->publish_cont (po->publish_cont_cls,
- NULL);
+ NULL, NULL);
GNUNET_TESTBED_operation_done (po->fs_op);
GNUNET_free (po);
return;
else
{
fi = GNUNET_FS_file_information_create_from_reader (po->fs, po,
- po->size,
- &file_generator, &po->publish_seed,
+ po->size,
+ &file_generator, &po->publish_seed,
NULL, NULL,
po->do_index, &bo);
}
GNUNET_SCHEDULER_add_continuation (dop->download_cont,
dop->download_cont_cls,
GNUNET_SCHEDULER_REASON_TIMEOUT);
- if (NULL == dop->fs)
- GNUNET_TESTBED_operation_cancel (dop->fs_op);
- else
- GNUNET_TESTBED_operation_done (dop->fs_op);
+ GNUNET_TESTBED_operation_done (dop->fs_op);
GNUNET_FS_uri_destroy (dop->uri);
GNUNET_free (dop);
}
/**
* Connect adapter for download operation.
- *
+ *
* @param cls the 'struct TestDownloadOperation'
* @param cfg configuration of the peer to connect to; will be available until
* GNUNET_TESTBED_operation_done() is called on the operation returned
const struct GNUNET_CONFIGURATION_Handle *cfg)
{
struct TestPublishOperation *po = cls;
-
+
return GNUNET_FS_start (cfg,
"fs-test-download",
&download_progress_cb, po,
+ GNUNET_FS_FLAGS_NONE,
GNUNET_FS_OPTIONS_END);
}
{
struct TestDownloadOperation *dop = cls;
+ dop->fs = ca_result;
+ GNUNET_assert (NULL != dop->fs);
dop->download_context =
GNUNET_FS_download_start (dop->fs, dop->uri, NULL, NULL, NULL, 0, dop->size,
dop->anonymity, GNUNET_FS_DOWNLOAD_OPTION_NONE,