diff options
author | Christian Grothoff <christian@grothoff.org> | 2012-01-28 14:17:44 +0000 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2012-01-28 14:17:44 +0000 |
commit | 873e09c5ebd42457daa2ba80e222a1087e0f71a8 (patch) | |
tree | ab708ccef7bd7d541a12ca71a0088f34c57e2833 /src/fs | |
parent | 210ec4ba3d5cdcea93c94623f3a5219eafe17c08 (diff) | |
download | gnunet-873e09c5ebd42457daa2ba80e222a1087e0f71a8.tar.gz gnunet-873e09c5ebd42457daa2ba80e222a1087e0f71a8.zip |
-fix dead scheduler task cancellation on CTRL-c
Diffstat (limited to 'src/fs')
-rw-r--r-- | src/fs/gnunet-publish.c | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/src/fs/gnunet-publish.c b/src/fs/gnunet-publish.c index d745074d4..ae5424bed 100644 --- a/src/fs/gnunet-publish.c +++ b/src/fs/gnunet-publish.c | |||
@@ -84,17 +84,18 @@ do_stop_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) | |||
84 | { | 84 | { |
85 | struct GNUNET_FS_PublishContext *p; | 85 | struct GNUNET_FS_PublishContext *p; |
86 | 86 | ||
87 | kill_task = GNUNET_SCHEDULER_NO_TASK; | ||
87 | if (pc != NULL) | 88 | if (pc != NULL) |
88 | { | 89 | { |
89 | p = pc; | 90 | p = pc; |
90 | pc = NULL; | 91 | pc = NULL; |
91 | GNUNET_FS_publish_stop (p); | 92 | GNUNET_FS_publish_stop (p); |
92 | if (NULL != meta) | ||
93 | { | ||
94 | GNUNET_CONTAINER_meta_data_destroy (meta); | ||
95 | meta = NULL; | ||
96 | } | ||
97 | } | 93 | } |
94 | if (NULL != meta) | ||
95 | { | ||
96 | GNUNET_CONTAINER_meta_data_destroy (meta); | ||
97 | meta = NULL; | ||
98 | } | ||
98 | } | 99 | } |
99 | 100 | ||
100 | 101 | ||
@@ -139,8 +140,7 @@ progress_cb (void *cls, const struct GNUNET_FS_ProgressInfo *info) | |||
139 | GNUNET_SCHEDULER_cancel (kill_task); | 140 | GNUNET_SCHEDULER_cancel (kill_task); |
140 | kill_task = GNUNET_SCHEDULER_NO_TASK; | 141 | kill_task = GNUNET_SCHEDULER_NO_TASK; |
141 | } | 142 | } |
142 | GNUNET_SCHEDULER_add_continuation (&do_stop_task, NULL, | 143 | kill_task = GNUNET_SCHEDULER_add_now (&do_stop_task, NULL); |
143 | GNUNET_SCHEDULER_REASON_PREREQ_DONE); | ||
144 | break; | 144 | break; |
145 | case GNUNET_FS_STATUS_PUBLISH_COMPLETED: | 145 | case GNUNET_FS_STATUS_PUBLISH_COMPLETED: |
146 | FPRINTF (stdout, _("Publishing `%s' done.\n"), | 146 | FPRINTF (stdout, _("Publishing `%s' done.\n"), |
@@ -156,8 +156,7 @@ progress_cb (void *cls, const struct GNUNET_FS_ProgressInfo *info) | |||
156 | GNUNET_SCHEDULER_cancel (kill_task); | 156 | GNUNET_SCHEDULER_cancel (kill_task); |
157 | kill_task = GNUNET_SCHEDULER_NO_TASK; | 157 | kill_task = GNUNET_SCHEDULER_NO_TASK; |
158 | } | 158 | } |
159 | GNUNET_SCHEDULER_add_continuation (&do_stop_task, NULL, | 159 | kill_task = GNUNET_SCHEDULER_add_now (&do_stop_task, NULL); |
160 | GNUNET_SCHEDULER_REASON_PREREQ_DONE); | ||
161 | } | 160 | } |
162 | break; | 161 | break; |
163 | case GNUNET_FS_STATUS_PUBLISH_STOPPED: | 162 | case GNUNET_FS_STATUS_PUBLISH_STOPPED: |
@@ -682,6 +681,8 @@ main (int argc, char *const *argv) | |||
682 | 0, &GNUNET_GETOPT_set_one, &verbose}, | 681 | 0, &GNUNET_GETOPT_set_one, &verbose}, |
683 | GNUNET_GETOPT_OPTION_END | 682 | GNUNET_GETOPT_OPTION_END |
684 | }; | 683 | }; |
684 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, | ||
685 | "GNUnet publish starts\n"); | ||
685 | bo.expiration_time = | 686 | bo.expiration_time = |
686 | GNUNET_FS_year_to_time (GNUNET_FS_get_current_year () + 2); | 687 | GNUNET_FS_year_to_time (GNUNET_FS_get_current_year () + 2); |
687 | return (GNUNET_OK == | 688 | return (GNUNET_OK == |