[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r19519 - gnunet/src/fs
From: |
gnunet |
Subject: |
[GNUnet-SVN] r19519 - gnunet/src/fs |
Date: |
Sun, 29 Jan 2012 23:15:22 +0100 |
Author: grothoff
Date: 2012-01-29 23:15:22 +0100 (Sun, 29 Jan 2012)
New Revision: 19519
Modified:
gnunet/src/fs/fs_dirmetascan.c
Log:
-fix
Modified: gnunet/src/fs/fs_dirmetascan.c
===================================================================
--- gnunet/src/fs/fs_dirmetascan.c 2012-01-29 22:04:45 UTC (rev 19518)
+++ gnunet/src/fs/fs_dirmetascan.c 2012-01-29 22:15:22 UTC (rev 19519)
@@ -78,6 +78,11 @@
struct GNUNET_FS_ShareTreeItem *pos;
/**
+ * Task scheduled when we are done.
+ */
+ GNUNET_SCHEDULER_TaskIdentifier stop_task;
+
+ /**
* Arguments for helper.
*/
char *args[4];
@@ -101,6 +106,8 @@
/* free resources */
if (NULL != ds->toplevel)
GNUNET_FS_share_tree_free (ds->toplevel);
+ if (GNUNET_SCHEDULER_NO_TASK != ds->stop_task)
+ GNUNET_SCHEDULER_cancel (ds->stop_task);
GNUNET_free_non_null (ds->ex_arg);
GNUNET_free (ds->filename_expanded);
GNUNET_free (ds);
@@ -202,6 +209,27 @@
/**
+ * Task run last to shut everything down.
+ *
+ * @param cls the 'struct GNUNET_FS_DirScanner'
+ * @param tc unused
+ */
+static void
+finish_scan (void *cls,
+ const struct GNUNET_SCHEDULER_TaskContext *tc)
+{
+ struct GNUNET_FS_DirScanner *ds = cls;
+
+ ds->stop_task = GNUNET_SCHEDULER_NO_TASK;
+ GNUNET_HELPER_stop (ds->helper);
+ ds->helper = NULL;
+ ds->progress_callback (ds->progress_callback_cls,
+ NULL, GNUNET_SYSERR,
+ GNUNET_FS_DIRSCANNER_FINISHED);
+}
+
+
+/**
* Called every time there is data to read from the scanner.
* Calls the scanner progress handler.
*
@@ -354,11 +382,8 @@
GNUNET_break (0);
break;
}
- GNUNET_HELPER_stop (ds->helper);
- ds->helper = NULL;
- ds->progress_callback (ds->progress_callback_cls,
- NULL, GNUNET_SYSERR,
- GNUNET_FS_DIRSCANNER_FINISHED);
+ ds->stop_task = GNUNET_SCHEDULER_add_now (&finish_scan,
+ ds);
return;
default:
GNUNET_break (0);
@@ -367,7 +392,6 @@
ds->progress_callback (ds->progress_callback_cls,
NULL, GNUNET_SYSERR,
GNUNET_FS_DIRSCANNER_INTERNAL_ERROR);
-
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r19519 - gnunet/src/fs,
gnunet <=