aboutsummaryrefslogtreecommitdiff
path: root/src/fs
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2011-07-19 09:56:49 +0000
committerChristian Grothoff <christian@grothoff.org>2011-07-19 09:56:49 +0000
commit936b15e2a941652763675501190ffe80bdb4c3a8 (patch)
treef68b8fefbe19b0f02da0bde1e373e1fa0e6b1c27 /src/fs
parent07c80f244ee516a70bdcf61f53ad1e075a5ab1d5 (diff)
downloadgnunet-936b15e2a941652763675501190ffe80bdb4c3a8.tar.gz
gnunet-936b15e2a941652763675501190ffe80bdb4c3a8.zip
fix shutdown
Diffstat (limited to 'src/fs')
-rw-r--r--src/fs/test_fs_publish_persistence.c20
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
75static int err; 75static int err;
76 76
77static GNUNET_SCHEDULER_TaskIdentifier rtask;
78
77static void 79static void
78abort_publish_task (void *cls, 80abort_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
98restart_fs_task (void *cls, 107restart_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 }