* @file fs/gnunet-service-fs_indexing.c
* @brief program that provides indexing functions of the file-sharing service
* @author Christian Grothoff
- *
- * TODO:
- * - indexed files/blocks not removed on errors
*/
#include "platform.h"
#include <float.h>
}
if (GNUNET_NO == GNUNET_DISK_file_test (fn))
{
- /* no index info yet */
+ /* no index info yet */
GNUNET_free (fn);
return;
}
const struct GNUNET_MessageHeader *message)
{
const struct IndexStartMessage *ism;
- const char *fn;
+ char *fn;
uint16_t msize;
struct IndexInfo *ii;
size_t slen;
return;
}
ism = (const struct IndexStartMessage*) message;
- fn = (const char*) &ism[1];
+ fn = GNUNET_STRINGS_filename_expand ((const char*) &ism[1]);
dev = ntohl (ism->device);
ino = GNUNET_ntohll (ism->inode);
ism = (const struct IndexStartMessage*) message;
{
/* fast validation OK! */
signal_index_ok (ii);
+ GNUNET_free (fn);
return;
}
#if DEBUG_FS
HASHING_BLOCKSIZE,
&hash_for_index_val,
ii);
+ GNUNET_free (fn);
}
STRERROR (errno));
if (fh != NULL)
GNUNET_DISK_file_close (fh);
- /* FIXME: if this happens often, we need
- to remove the OnDemand block from the DS! */
+ GNUNET_FS_drq_remove (key,
+ size,
+ data,
+ &remove_cont,
+ NULL,
+ GNUNET_TIME_UNIT_FOREVER_REL);
return GNUNET_SYSERR;
}
GNUNET_DISK_file_close (fh);
_("Indexed file `%s' changed at offset %llu\n"),
fn,
(unsigned long long) off);
- /* FIXME: if this happens often, we need
- to remove the OnDemand block from the DS! */
+ GNUNET_FS_drq_remove (key,
+ size,
+ data,
+ &remove_cont,
+ NULL,
+ GNUNET_TIME_UNIT_FOREVER_REL);
return GNUNET_SYSERR;
}
#if DEBUG_FS