diff options
author | Schanzenbach, Martin <martin.schanzenbach@aisec.fraunhofer.de> | 2018-08-09 11:23:07 +0200 |
---|---|---|
committer | Schanzenbach, Martin <martin.schanzenbach@aisec.fraunhofer.de> | 2018-08-09 11:23:07 +0200 |
commit | 6b82442f874cbabaaf19e8c558584ceca734cff6 (patch) | |
tree | be2d776baa45364cfb5f1f55bd4d2b2f0e2a8491 /src/reclaim | |
parent | 26bf151b590d18c360ca9bb77890fbd2d79775f3 (diff) | |
download | gnunet-6b82442f874cbabaaf19e8c558584ceca734cff6.tar.gz gnunet-6b82442f874cbabaaf19e8c558584ceca734cff6.zip |
Apparently ignoring return values from add_now is almost always a bug
Diffstat (limited to 'src/reclaim')
-rw-r--r-- | src/reclaim/gnunet-reclaim.c | 29 |
1 files changed, 18 insertions, 11 deletions
diff --git a/src/reclaim/gnunet-reclaim.c b/src/reclaim/gnunet-reclaim.c index 33bad662d..ecc81fb8e 100644 --- a/src/reclaim/gnunet-reclaim.c +++ b/src/reclaim/gnunet-reclaim.c | |||
@@ -134,9 +134,15 @@ static struct GNUNET_TIME_Relative exp_interval; | |||
134 | */ | 134 | */ |
135 | static struct GNUNET_SCHEDULER_Task *timeout; | 135 | static struct GNUNET_SCHEDULER_Task *timeout; |
136 | 136 | ||
137 | /** | ||
138 | * Cleanup task | ||
139 | */ | ||
140 | static struct GNUNET_SCHEDULER_Task *cleanup_task; | ||
141 | |||
137 | static void | 142 | static void |
138 | do_cleanup(void *cls) | 143 | do_cleanup(void *cls) |
139 | { | 144 | { |
145 | cleanup_task = NULL; | ||
140 | if (NULL != timeout) | 146 | if (NULL != timeout) |
141 | GNUNET_SCHEDULER_cancel (timeout); | 147 | GNUNET_SCHEDULER_cancel (timeout); |
142 | if (NULL != reclaim_op) | 148 | if (NULL != reclaim_op) |
@@ -166,7 +172,7 @@ ticket_issue_cb (void* cls, | |||
166 | ticket_str); | 172 | ticket_str); |
167 | GNUNET_free (ticket_str); | 173 | GNUNET_free (ticket_str); |
168 | } | 174 | } |
169 | GNUNET_SCHEDULER_add_now (&do_cleanup, NULL); | 175 | cleanup_task = GNUNET_SCHEDULER_add_now (&do_cleanup, NULL); |
170 | } | 176 | } |
171 | 177 | ||
172 | static void | 178 | static void |
@@ -179,7 +185,7 @@ store_attr_cont (void *cls, | |||
179 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, | 185 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, |
180 | "%s\n", emsg); | 186 | "%s\n", emsg); |
181 | } | 187 | } |
182 | GNUNET_SCHEDULER_add_now (&do_cleanup, NULL); | 188 | cleanup_task = GNUNET_SCHEDULER_add_now (&do_cleanup, NULL); |
183 | } | 189 | } |
184 | 190 | ||
185 | static void | 191 | static void |
@@ -191,7 +197,7 @@ process_attrs (void *cls, | |||
191 | if (NULL == identity) | 197 | if (NULL == identity) |
192 | { | 198 | { |
193 | reclaim_op = NULL; | 199 | reclaim_op = NULL; |
194 | GNUNET_SCHEDULER_add_now (&do_cleanup, NULL); | 200 | cleanup_task = GNUNET_SCHEDULER_add_now (&do_cleanup, NULL); |
195 | return; | 201 | return; |
196 | } | 202 | } |
197 | if (NULL == attr) | 203 | if (NULL == attr) |
@@ -213,7 +219,7 @@ iter_error (void *cls) | |||
213 | attr_iterator = NULL; | 219 | attr_iterator = NULL; |
214 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, | 220 | GNUNET_log (GNUNET_ERROR_TYPE_ERROR, |
215 | "Failed to iterate over attributes\n"); | 221 | "Failed to iterate over attributes\n"); |
216 | GNUNET_SCHEDULER_add_now (&do_cleanup, NULL); | 222 | cleanup_task = GNUNET_SCHEDULER_add_now (&do_cleanup, NULL); |
217 | } | 223 | } |
218 | 224 | ||
219 | static void | 225 | static void |
@@ -223,7 +229,8 @@ timeout_task (void *cls) | |||
223 | ret = 1; | 229 | ret = 1; |
224 | GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE, | 230 | GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE, |
225 | "Timeout\n"); | 231 | "Timeout\n"); |
226 | GNUNET_SCHEDULER_add_now (&do_cleanup, NULL); | 232 | if (NULL == cleanup_task) |
233 | cleanup_task = GNUNET_SCHEDULER_add_now (&do_cleanup, NULL); | ||
227 | } | 234 | } |
228 | 235 | ||
229 | static void | 236 | static void |
@@ -236,7 +243,7 @@ process_rvk (void *cls, int success, const char* msg) | |||
236 | "Revocation failed.\n"); | 243 | "Revocation failed.\n"); |
237 | ret = 1; | 244 | ret = 1; |
238 | } | 245 | } |
239 | GNUNET_SCHEDULER_add_now (&do_cleanup, NULL); | 246 | cleanup_task = GNUNET_SCHEDULER_add_now (&do_cleanup, NULL); |
240 | } | 247 | } |
241 | 248 | ||
242 | static void | 249 | static void |
@@ -250,7 +257,7 @@ iter_finished (void *cls) | |||
250 | attr_iterator = NULL; | 257 | attr_iterator = NULL; |
251 | if (list) | 258 | if (list) |
252 | { | 259 | { |
253 | GNUNET_SCHEDULER_add_now (&do_cleanup, NULL); | 260 | cleanup_task = GNUNET_SCHEDULER_add_now (&do_cleanup, NULL); |
254 | return; | 261 | return; |
255 | } | 262 | } |
256 | 263 | ||
@@ -308,7 +315,7 @@ iter_finished (void *cls) | |||
308 | NULL); | 315 | NULL); |
309 | return; | 316 | return; |
310 | } | 317 | } |
311 | GNUNET_SCHEDULER_add_now (&do_cleanup, NULL); | 318 | cleanup_task = GNUNET_SCHEDULER_add_now (&do_cleanup, NULL); |
312 | } | 319 | } |
313 | 320 | ||
314 | static void | 321 | static void |
@@ -351,13 +358,13 @@ iter_cb (void *cls, | |||
351 | } | 358 | } |
352 | 359 | ||
353 | static void | 360 | static void |
354 | ego_iter_finished (void *cls) | 361 | start_get_attributes () |
355 | { | 362 | { |
356 | if (NULL == pkey) | 363 | if (NULL == pkey) |
357 | { | 364 | { |
358 | GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE, | 365 | GNUNET_log (GNUNET_ERROR_TYPE_MESSAGE, |
359 | "Ego %s not found\n", ego_name); | 366 | "Ego %s not found\n", ego_name); |
360 | GNUNET_SCHEDULER_add_now (&do_cleanup, NULL); | 367 | cleanup_task = GNUNET_SCHEDULER_add_now (&do_cleanup, NULL); |
361 | return; | 368 | return; |
362 | } | 369 | } |
363 | 370 | ||
@@ -402,7 +409,7 @@ ego_cb (void *cls, | |||
402 | if (NULL == name) { | 409 | if (NULL == name) { |
403 | if (GNUNET_YES == init) { | 410 | if (GNUNET_YES == init) { |
404 | init = GNUNET_NO; | 411 | init = GNUNET_NO; |
405 | GNUNET_SCHEDULER_add_now (&ego_iter_finished, NULL); | 412 | start_get_attributes(); |
406 | } | 413 | } |
407 | return; | 414 | return; |
408 | } | 415 | } |