aboutsummaryrefslogtreecommitdiff
path: root/src/fs
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2012-01-28 14:17:44 +0000
committerChristian Grothoff <christian@grothoff.org>2012-01-28 14:17:44 +0000
commit873e09c5ebd42457daa2ba80e222a1087e0f71a8 (patch)
treeab708ccef7bd7d541a12ca71a0088f34c57e2833 /src/fs
parent210ec4ba3d5cdcea93c94623f3a5219eafe17c08 (diff)
downloadgnunet-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.c19
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 ==