{
struct GNUNET_FS_PublishContext *pc = cls;
+ if (pc->fhc != NULL)
+ {
+ GNUNET_CRYPTO_hash_file_cancel (pc->fhc);
+ pc->fhc = NULL;
+ }
GNUNET_FS_file_information_destroy (pc->fi, NULL, NULL);
if (pc->namespace != NULL)
GNUNET_FS_namespace_delete (pc->namespace, GNUNET_NO);
pcc->p->client_info = GNUNET_FS_publish_make_status_ (&pi, pcc->sc, pcc->p, 0);
if ( (pcc->p->is_directory == GNUNET_NO) &&
(pcc->p->filename != NULL) &&
- (pcc->p->data.do_index == GNUNET_YES) )
+ (pcc->p->data.file.do_index == GNUNET_YES) )
{
/* run unindex to clean up */
GNUNET_FS_unindex_start (pcc->sc->h,
p->client_info = GNUNET_FS_publish_make_status_ (&pi, sc, p, 0);
if ( (p->is_directory == GNUNET_NO) &&
(p->filename != NULL) &&
- (p->data.do_index == GNUNET_YES) )
+ (p->data.file.do_index == GNUNET_YES) )
{
/* run unindex to clean up */
- GNUNET_FS_unindex_start (pc->h,
+ GNUNET_FS_unindex_start (sc->h,
p->filename,
NULL);
}
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
"Finished with tree encoder\n");
#endif
+ /* final progress event */
+ pi.status = GNUNET_FS_STATUS_PUBLISH_PROGRESS;
+ pi.value.publish.specifics.progress.data = NULL;
+ pi.value.publish.specifics.progress.offset = GNUNET_FS_uri_chk_get_file_size (p->chk_uri);
+ pi.value.publish.specifics.progress.data_len = 0;
+ pi.value.publish.specifics.progress.depth = 0;
+ p->client_info = GNUNET_FS_publish_make_status_ (&pi, sc, p,
+ GNUNET_FS_uri_chk_get_file_size (p->chk_uri));
+
/* continue with main */
sc->upload_task
= GNUNET_SCHEDULER_add_with_priority (sc->h->sched,
odb.offset = GNUNET_htonll (offset);
odb.file_id = p->data.file.file_id;
GNUNET_DATASTORE_put (sc->dsh,
- sc->rid,
+ (p->is_directory) ? 0 : sc->rid,
query,
sizeof(struct OnDemandBlock),
&odb,
(unsigned int) block_size);
#endif
GNUNET_DATASTORE_put (sc->dsh,
- sc->rid,
+ (p->is_directory) ? 0 : sc->rid,
query,
block_size,
block,
uint64_t ino;
char *fn;
+ sc->fhc = NULL;
p = sc->fi_pos;
if (NULL == res)
{
else
{
p->start_time = GNUNET_TIME_absolute_get ();
- GNUNET_CRYPTO_hash_file (pc->h->sched,
- GNUNET_SCHEDULER_PRIORITY_IDLE,
- p->filename,
- HASHING_BLOCKSIZE,
- &hash_for_index_cb,
- pc);
+ pc->fhc = GNUNET_CRYPTO_hash_file (pc->h->sched,
+ GNUNET_SCHEDULER_PRIORITY_IDLE,
+ p->filename,
+ HASHING_BLOCKSIZE,
+ &hash_for_index_cb,
+ pc);
}
return;
}
left = left * sizeof (struct ContentHashKey);
sc->reserve_space += left;
}
+ sc->reserve_entries++;
/* entries and space for keywords */
if (NULL != *uri)
{
struct GNUNET_FS_PublishContext *ret;
struct GNUNET_DATASTORE_Handle *dsh;
+ GNUNET_assert (NULL != h);
if (0 == (options & GNUNET_FS_PUBLISH_OPTION_SIMULATE_ONLY))
{
dsh = GNUNET_DATASTORE_connect (h->cfg,