diff options
Diffstat (limited to 'src/fs/gnunet-publish.c')
-rw-r--r-- | src/fs/gnunet-publish.c | 30 |
1 files changed, 24 insertions, 6 deletions
diff --git a/src/fs/gnunet-publish.c b/src/fs/gnunet-publish.c index 406433a71..370f1062c 100644 --- a/src/fs/gnunet-publish.c +++ b/src/fs/gnunet-publish.c | |||
@@ -96,6 +96,29 @@ do_stop_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) | |||
96 | 96 | ||
97 | 97 | ||
98 | /** | 98 | /** |
99 | * Stop the directory scanner (we had an error). | ||
100 | * | ||
101 | * @param cls closure | ||
102 | * @param tc scheduler context | ||
103 | */ | ||
104 | static void | ||
105 | stop_scanner_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) | ||
106 | { | ||
107 | kill_task = GNUNET_SCHEDULER_NO_TASK; | ||
108 | GNUNET_FS_directory_scan_abort (ds); | ||
109 | ds = NULL; | ||
110 | if (namespace != NULL) | ||
111 | { | ||
112 | GNUNET_FS_namespace_delete (namespace, GNUNET_NO); | ||
113 | namespace = NULL; | ||
114 | } | ||
115 | GNUNET_FS_stop (ctx); | ||
116 | ctx = NULL; | ||
117 | ret = 1; | ||
118 | } | ||
119 | |||
120 | |||
121 | /** | ||
99 | * Called by FS client to give information about the progress of an | 122 | * Called by FS client to give information about the progress of an |
100 | * operation. | 123 | * operation. |
101 | * | 124 | * |
@@ -487,17 +510,12 @@ directory_scan_cb (void *cls, | |||
487 | break; | 510 | break; |
488 | case GNUNET_FS_DIRSCANNER_INTERNAL_ERROR: | 511 | case GNUNET_FS_DIRSCANNER_INTERNAL_ERROR: |
489 | FPRINTF (stdout, "%s", _("Internal error scanning directory.\n")); | 512 | FPRINTF (stdout, "%s", _("Internal error scanning directory.\n")); |
490 | GNUNET_FS_directory_scan_abort (ds); | ||
491 | ds = NULL; | ||
492 | if (namespace != NULL) | ||
493 | GNUNET_FS_namespace_delete (namespace, GNUNET_NO); | ||
494 | GNUNET_FS_stop (ctx); | ||
495 | if (kill_task != GNUNET_SCHEDULER_NO_TASK) | 513 | if (kill_task != GNUNET_SCHEDULER_NO_TASK) |
496 | { | 514 | { |
497 | GNUNET_SCHEDULER_cancel (kill_task); | 515 | GNUNET_SCHEDULER_cancel (kill_task); |
498 | kill_task = GNUNET_SCHEDULER_NO_TASK; | 516 | kill_task = GNUNET_SCHEDULER_NO_TASK; |
499 | } | 517 | } |
500 | ret = 1; | 518 | kill_task = GNUNET_SCHEDULER_add_now (&stop_scanner_task, NULL); |
501 | break; | 519 | break; |
502 | default: | 520 | default: |
503 | GNUNET_assert (0); | 521 | GNUNET_assert (0); |