diff options
author | Christian Grothoff <christian@grothoff.org> | 2014-12-24 01:10:47 +0000 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2014-12-24 01:10:47 +0000 |
commit | f1f603c7d0b3f03dca46a4f313472288eb080eb1 (patch) | |
tree | 3a29966b02dfb83e0a8a8d5c42b3116380209fb0 /src/fs/gnunet-publish.c | |
parent | 53cd5b8eda2fa8db86b0907a62a39598981d008a (diff) | |
download | gnunet-f1f603c7d0b3f03dca46a4f313472288eb080eb1.tar.gz gnunet-f1f603c7d0b3f03dca46a4f313472288eb080eb1.zip |
making GNUNET_SCHEDULER_cancel() perform in O(1) instead of O(n) to help or even fully address #3247
Diffstat (limited to 'src/fs/gnunet-publish.c')
-rw-r--r-- | src/fs/gnunet-publish.c | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/src/fs/gnunet-publish.c b/src/fs/gnunet-publish.c index ceed3109f..2ec50b14d 100644 --- a/src/fs/gnunet-publish.c +++ b/src/fs/gnunet-publish.c | |||
@@ -127,7 +127,7 @@ static int do_disable_creation_time; | |||
127 | /** | 127 | /** |
128 | * Task run on CTRL-C to kill everything nicely. | 128 | * Task run on CTRL-C to kill everything nicely. |
129 | */ | 129 | */ |
130 | static GNUNET_SCHEDULER_TaskIdentifier kill_task; | 130 | static struct GNUNET_SCHEDULER_Task * kill_task; |
131 | 131 | ||
132 | /** | 132 | /** |
133 | * Handle to the directory scanner (for recursive insertions). | 133 | * Handle to the directory scanner (for recursive insertions). |
@@ -159,7 +159,7 @@ do_stop_task (void *cls, | |||
159 | { | 159 | { |
160 | struct GNUNET_FS_PublishContext *p; | 160 | struct GNUNET_FS_PublishContext *p; |
161 | 161 | ||
162 | kill_task = GNUNET_SCHEDULER_NO_TASK; | 162 | kill_task = NULL; |
163 | if (NULL != identity) | 163 | if (NULL != identity) |
164 | { | 164 | { |
165 | GNUNET_IDENTITY_disconnect (identity); | 165 | GNUNET_IDENTITY_disconnect (identity); |
@@ -188,7 +188,7 @@ do_stop_task (void *cls, | |||
188 | static void | 188 | static void |
189 | stop_scanner_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) | 189 | stop_scanner_task (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) |
190 | { | 190 | { |
191 | kill_task = GNUNET_SCHEDULER_NO_TASK; | 191 | kill_task = NULL; |
192 | if (NULL != ds) | 192 | if (NULL != ds) |
193 | { | 193 | { |
194 | GNUNET_FS_directory_scan_abort (ds); | 194 | GNUNET_FS_directory_scan_abort (ds); |
@@ -256,10 +256,10 @@ progress_cb (void *cls, | |||
256 | case GNUNET_FS_STATUS_PUBLISH_ERROR: | 256 | case GNUNET_FS_STATUS_PUBLISH_ERROR: |
257 | FPRINTF (stderr, _("Error publishing: %s.\n"), | 257 | FPRINTF (stderr, _("Error publishing: %s.\n"), |
258 | info->value.publish.specifics.error.message); | 258 | info->value.publish.specifics.error.message); |
259 | if (kill_task != GNUNET_SCHEDULER_NO_TASK) | 259 | if (kill_task != NULL) |
260 | { | 260 | { |
261 | GNUNET_SCHEDULER_cancel (kill_task); | 261 | GNUNET_SCHEDULER_cancel (kill_task); |
262 | kill_task = GNUNET_SCHEDULER_NO_TASK; | 262 | kill_task = NULL; |
263 | } | 263 | } |
264 | kill_task = GNUNET_SCHEDULER_add_now (&do_stop_task, NULL); | 264 | kill_task = GNUNET_SCHEDULER_add_now (&do_stop_task, NULL); |
265 | break; | 265 | break; |
@@ -284,7 +284,7 @@ progress_cb (void *cls, | |||
284 | } | 284 | } |
285 | if (NULL == info->value.publish.pctx) | 285 | if (NULL == info->value.publish.pctx) |
286 | { | 286 | { |
287 | if (GNUNET_SCHEDULER_NO_TASK != kill_task) | 287 | if (NULL != kill_task) |
288 | GNUNET_SCHEDULER_cancel (kill_task); | 288 | GNUNET_SCHEDULER_cancel (kill_task); |
289 | kill_task = GNUNET_SCHEDULER_add_now (&do_stop_task, NULL); | 289 | kill_task = GNUNET_SCHEDULER_add_now (&do_stop_task, NULL); |
290 | } | 290 | } |
@@ -669,10 +669,10 @@ directory_scan_cb (void *cls, | |||
669 | FPRINTF (stdout, | 669 | FPRINTF (stdout, |
670 | "%s", | 670 | "%s", |
671 | _("Internal error scanning directory.\n")); | 671 | _("Internal error scanning directory.\n")); |
672 | if (kill_task != GNUNET_SCHEDULER_NO_TASK) | 672 | if (kill_task != NULL) |
673 | { | 673 | { |
674 | GNUNET_SCHEDULER_cancel (kill_task); | 674 | GNUNET_SCHEDULER_cancel (kill_task); |
675 | kill_task = GNUNET_SCHEDULER_NO_TASK; | 675 | kill_task = NULL; |
676 | } | 676 | } |
677 | kill_task = GNUNET_SCHEDULER_add_now (&stop_scanner_task, NULL); | 677 | kill_task = GNUNET_SCHEDULER_add_now (&stop_scanner_task, NULL); |
678 | break; | 678 | break; |