diff options
author | Christian Grothoff <christian@grothoff.org> | 2011-07-19 09:56:49 +0000 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2011-07-19 09:56:49 +0000 |
commit | 936b15e2a941652763675501190ffe80bdb4c3a8 (patch) | |
tree | f68b8fefbe19b0f02da0bde1e373e1fa0e6b1c27 | |
parent | 07c80f244ee516a70bdcf61f53ad1e075a5ab1d5 (diff) | |
download | gnunet-936b15e2a941652763675501190ffe80bdb4c3a8.tar.gz gnunet-936b15e2a941652763675501190ffe80bdb4c3a8.zip |
fix shutdown
-rw-r--r-- | src/fs/test_fs_publish_persistence.c | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/src/fs/test_fs_publish_persistence.c b/src/fs/test_fs_publish_persistence.c index e06d5c18f..2d8332602 100644 --- a/src/fs/test_fs_publish_persistence.c +++ b/src/fs/test_fs_publish_persistence.c | |||
@@ -74,6 +74,8 @@ static char *fn2; | |||
74 | 74 | ||
75 | static int err; | 75 | static int err; |
76 | 76 | ||
77 | static GNUNET_SCHEDULER_TaskIdentifier rtask; | ||
78 | |||
77 | static void | 79 | static void |
78 | abort_publish_task (void *cls, | 80 | abort_publish_task (void *cls, |
79 | const struct GNUNET_SCHEDULER_TaskContext *tc) | 81 | const struct GNUNET_SCHEDULER_TaskContext *tc) |
@@ -86,6 +88,13 @@ abort_publish_task (void *cls, | |||
86 | GNUNET_DISK_directory_remove (fn2); | 88 | GNUNET_DISK_directory_remove (fn2); |
87 | GNUNET_free (fn2); | 89 | GNUNET_free (fn2); |
88 | fn2 = NULL; | 90 | fn2 = NULL; |
91 | GNUNET_FS_stop (fs); | ||
92 | fs = NULL; | ||
93 | if (GNUNET_SCHEDULER_NO_TASK != rtask) | ||
94 | { | ||
95 | GNUNET_SCHEDULER_cancel (rtask); | ||
96 | rtask = GNUNET_SCHEDULER_NO_TASK; | ||
97 | } | ||
89 | } | 98 | } |
90 | 99 | ||
91 | 100 | ||
@@ -98,6 +107,7 @@ static void | |||
98 | restart_fs_task (void *cls, | 107 | restart_fs_task (void *cls, |
99 | const struct GNUNET_SCHEDULER_TaskContext *tc) | 108 | const struct GNUNET_SCHEDULER_TaskContext *tc) |
100 | { | 109 | { |
110 | rtask = GNUNET_SCHEDULER_NO_TASK; | ||
101 | GNUNET_FS_stop (fs); | 111 | GNUNET_FS_stop (fs); |
102 | fs = GNUNET_FS_start (cfg, | 112 | fs = GNUNET_FS_start (cfg, |
103 | "test-fs-publish-persistence", | 113 | "test-fs-publish-persistence", |
@@ -125,9 +135,9 @@ consider_restart (int ev) | |||
125 | if (prev[i] == ev) | 135 | if (prev[i] == ev) |
126 | return; | 136 | return; |
127 | prev[off++] = ev; | 137 | prev[off++] = ev; |
128 | GNUNET_SCHEDULER_add_with_priority (GNUNET_SCHEDULER_PRIORITY_URGENT, | 138 | rtask = GNUNET_SCHEDULER_add_with_priority (GNUNET_SCHEDULER_PRIORITY_URGENT, |
129 | &restart_fs_task, | 139 | &restart_fs_task, |
130 | NULL); | 140 | NULL); |
131 | } | 141 | } |
132 | 142 | ||
133 | 143 | ||
@@ -144,7 +154,7 @@ progress_cb (void *cls, | |||
144 | consider_restart (event->status); | 154 | consider_restart (event->status); |
145 | ret = event->value.publish.cctx; | 155 | ret = event->value.publish.cctx; |
146 | printf ("Publish complete, %llu kbps.\n", | 156 | printf ("Publish complete, %llu kbps.\n", |
147 | (unsigned long long) (FILESIZE * 1000 / (1+GNUNET_TIME_absolute_get_duration (start).rel_value) / 1024)); | 157 | (unsigned long long) (FILESIZE * 1000LL / (1+GNUNET_TIME_absolute_get_duration (start).rel_value) / 1024)); |
148 | if (0 == strcmp ("publish-context-dir", | 158 | if (0 == strcmp ("publish-context-dir", |
149 | event->value.publish.cctx)) | 159 | event->value.publish.cctx)) |
150 | GNUNET_SCHEDULER_add_now (&abort_publish_task, | 160 | GNUNET_SCHEDULER_add_now (&abort_publish_task, |
@@ -169,6 +179,8 @@ progress_cb (void *cls, | |||
169 | case GNUNET_FS_STATUS_PUBLISH_RESUME: | 179 | case GNUNET_FS_STATUS_PUBLISH_RESUME: |
170 | if (NULL == publish) | 180 | if (NULL == publish) |
171 | { | 181 | { |
182 | GNUNET_assert (GNUNET_YES == | ||
183 | GNUNET_FS_file_information_is_directory (event->value.publish.fi)); | ||
172 | publish = event->value.publish.pc; | 184 | publish = event->value.publish.pc; |
173 | return "publish-context-dir"; | 185 | return "publish-context-dir"; |
174 | } | 186 | } |