/* stop probes if possible */
num_probes_change = - num_probes_active;
num_downloads_change = h->max_parallel_requests - h->active_downloads;
- }
- else
+ }
+ else
{
/* start all downloads */
num_downloads_change = num_downloads_waiting;
num_probes_change = GNUNET_MIN (num_probes_waiting,
h->max_parallel_requests - (h->active_downloads + num_downloads_waiting));
}
-
+
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
"Changing %d probes and %d downloads\n",
num_probes_change,
next = qe->next;
if (GNUNET_FS_QUEUE_PRIORITY_PROBE != qe->priority)
continue;
- if (num_probes_change < 0)
+ if (num_probes_change < 0)
{
stop_job (qe);
num_probes_change++;
( (qe->blocks + h->active_blocks <= h->max_parallel_requests) ||
( (qe->blocks > h->max_parallel_requests) &&
(0 == h->active_downloads) ) ) )
- {
+ {
start_job (qe);
num_downloads_change--;
}
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
"AD: %u, MP: %u; %d probes and %d downloads to start, will run again in %s\n",
h->active_downloads,
- h->max_parallel_requests,
+ h->max_parallel_requests,
num_probes_change,
num_downloads_change,
GNUNET_STRINGS_relative_time_to_string (restart_at, GNUNET_YES));
return 0;
}
}
- if ( (GNUNET_SYSERR ==
+ if ( (GNUNET_SYSERR ==
GNUNET_DISK_file_seek (fi->fd, offset, GNUNET_DISK_SEEK_SET)) ||
(-1 == (ret = GNUNET_DISK_file_read (fi->fd, buf, max))) )
{
{
struct FileInfo *fi;
- fi = GNUNET_malloc (sizeof (struct FileInfo));
+ fi = GNUNET_new (struct FileInfo);
fi->filename = GNUNET_STRINGS_filename_expand (filename);
if (NULL == fi->filename)
{
* @return NULL on error
*/
static struct GNUNET_FS_FileInformation *
-deserialize_file_information (struct GNUNET_FS_Handle *h, const char *filename)
+deserialize_file_information (struct GNUNET_FS_Handle *h,
+ const char *filename)
{
struct GNUNET_FS_FileInformation *ret;
struct GNUNET_BIO_ReadHandle *rh;
*
* @param wh write handle
* @param fi file with reader
- * @return GNUNET_OK on success
+ * @return #GNUNET_OK on success
*/
static int
copy_from_reader (struct GNUNET_BIO_WriteHandle *wh,
}
break;
case 4: /* directory */
+ if ( (NULL != fi->data.dir.entries) &&
+ (NULL == fi->data.dir.entries->serialization) )
+ GNUNET_FS_file_information_sync_ (fi->data.dir.entries);
if ((GNUNET_OK != GNUNET_BIO_write_int32 (wh, fi->data.dir.dir_size)) ||
(GNUNET_OK !=
GNUNET_BIO_write (wh, fi->data.dir.dir_data,
GNUNET_assert (0);
goto cleanup;
}
+ if ( (NULL != fi->next) &&
+ (NULL == fi->next->serialization) )
+ GNUNET_FS_file_information_sync_ (fi->next);
if (GNUNET_OK !=
GNUNET_BIO_write_string (wh,
(fi->next !=
* @return NULL if srch was not found in this subtree
*/
static struct GNUNET_FS_FileInformation *
-find_file_position (struct GNUNET_FS_FileInformation *pos,
+find_file_position (struct GNUNET_FS_FileInformation *pos,
const char *srch)
{
struct GNUNET_FS_FileInformation *r;
while (NULL != pos)
{
- fprintf (stderr,
- "CMP: %s %s\n",
- srch, pos->serialization);
if (0 == strcmp (srch, pos->serialization))
return pos;
if ( (GNUNET_YES == pos->is_directory) &&
(NULL != (r = find_file_position (pos->data.dir.entries, srch))) )
- return r;
+ return r;
pos = pos->next;
}
return NULL;
* Signal the FS's progress function that we are resuming
* an upload.
*
- * @param cls closure (of type "struct GNUNET_FS_PublishContext*")
+ * @param cls closure (of type `struct GNUNET_FS_PublishContext *`, for the parent (!))
* @param fi the entry in the publish-structure
* @param length length of the file or directory
* @param meta metadata for the file or directory (can be modified)
* @param bo block options (can be modified)
* @param do_index should we index?
* @param client_info pointer to client context set upon creation (can be modified)
- * @return GNUNET_OK to continue (always)
+ * @return #GNUNET_OK to continue (always)
*/
static int
fip_signal_resume (void *cls, struct GNUNET_FS_FileInformation *fi,
return GNUNET_OK;
}
pi.status = GNUNET_FS_STATUS_PUBLISH_RESUME;
- pi.value.publish.specifics.resume.message = pc->fi->emsg;
- pi.value.publish.specifics.resume.chk_uri = pc->fi->chk_uri;
+ pi.value.publish.specifics.resume.message = fi->emsg;
+ pi.value.publish.specifics.resume.chk_uri = fi->chk_uri;
*client_info = GNUNET_FS_publish_make_status_ (&pi, pc, fi, 0);
if (GNUNET_YES == GNUNET_FS_meta_data_test_for_directory (meta))
{
* Function called with a filename of serialized publishing operation
* to deserialize.
*
- * @param cls the 'struct GNUNET_FS_Handle*'
+ * @param cls the `struct GNUNET_FS_Handle *`
* @param filename complete filename (absolute path)
* @return #GNUNET_OK (continue to iterate)
*/
GNUNET_assert (GNUNET_SCHEDULER_NO_TASK == pc->upload_task);
pc->upload_task =
GNUNET_SCHEDULER_add_with_priority
- (GNUNET_SCHEDULER_PRIORITY_BACKGROUND,
+ (GNUNET_SCHEDULER_PRIORITY_BACKGROUND,
&GNUNET_FS_publish_main_, pc);
}
if (GNUNET_OK != GNUNET_BIO_read_close (rh, &emsg))
GNUNET_BIO_write_string (wh,
(NULL == pc->fi_pos) ? NULL : pc->fi_pos->serialization)) ||
( (NULL != pc->ns) &&
- GNUNET_BIO_write (wh,
- pc->ns,
- sizeof (struct GNUNET_CRYPTO_EccPrivateKey)) ) )
+ (GNUNET_OK != GNUNET_BIO_write (wh,
+ pc->ns,
+ sizeof (struct GNUNET_CRYPTO_EccPrivateKey)) ) ))
{
GNUNET_break (0);
goto cleanup;
/**
* Serialize a download request.
*
- * @param wh the 'struct GNUNET_BIO_WriteHandle*'
- * @param dr the 'struct DownloadRequest'
- * @return GNUNET_YES on success, GNUNET_NO on error
+ * @param wh the `struct GNUNET_BIO_WriteHandle*`
+ * @param dr the the request to write to disk
+ * @return #GNUNET_YES on success, #GNUNET_NO on error
*/
static int
write_download_request (struct GNUNET_BIO_WriteHandle *wh,
* Read a download request tree.
*
* @param rh mesh to read from
- * @return value the 'struct DownloadRequest', NULL on error
+ * @return value the download request read from disk, NULL on error
*/
static struct DownloadRequest *
read_download_request (struct GNUNET_BIO_ReadHandle *rh)
if (NULL != wh)
(void) GNUNET_BIO_write_close (wh);
remove_sync_file_in_dir (sr->h,
- (NULL == sr->sc->psearch_result)
- ? GNUNET_FS_SYNC_PATH_MASTER_SEARCH
+ (NULL == sr->sc->psearch_result)
+ ? GNUNET_FS_SYNC_PATH_MASTER_SEARCH
: GNUNET_FS_SYNC_PATH_CHILD_SEARCH,
sr->sc->serialization, sr->serialization);
GNUNET_free (sr->serialization);
const char *category;
category =
- (NULL == sc->psearch_result)
- ? GNUNET_FS_SYNC_PATH_MASTER_SEARCH
+ (NULL == sc->psearch_result)
+ ? GNUNET_FS_SYNC_PATH_MASTER_SEARCH
: GNUNET_FS_SYNC_PATH_CHILD_SEARCH;
if (NULL == sc->serialization)
sc->serialization = make_serialization_file_name (sc->h, category);
{
GNUNET_break (0);
goto cleanup;
- }
+ }
uc->state = (enum UnindexState) state;
switch (state)
{
if (NULL != ser)
{
remove_sync_file_in_dir (sc->h,
- (NULL == sc->psearch_result)
- ? GNUNET_FS_SYNC_PATH_MASTER_SEARCH
+ (NULL == sc->psearch_result)
+ ? GNUNET_FS_SYNC_PATH_MASTER_SEARCH
: GNUNET_FS_SYNC_PATH_CHILD_SEARCH,
sc->serialization, ser);
GNUNET_free (ser);