aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSchanzenbach, Martin <martin.schanzenbach@aisec.fraunhofer.de>2018-08-09 11:23:07 +0200
committerSchanzenbach, Martin <martin.schanzenbach@aisec.fraunhofer.de>2018-08-09 11:23:07 +0200
commit6b82442f874cbabaaf19e8c558584ceca734cff6 (patch)
treebe2d776baa45364cfb5f1f55bd4d2b2f0e2a8491 /src
parent26bf151b590d18c360ca9bb77890fbd2d79775f3 (diff)
downloadgnunet-6b82442f874cbabaaf19e8c558584ceca734cff6.tar.gz
gnunet-6b82442f874cbabaaf19e8c558584ceca734cff6.zip
Apparently ignoring return values from add_now is almost always a bug
Diffstat (limited to 'src')
-rw-r--r--src/reclaim/gnunet-reclaim.c29
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 */
135static struct GNUNET_SCHEDULER_Task *timeout; 135static struct GNUNET_SCHEDULER_Task *timeout;
136 136
137/**
138 * Cleanup task
139 */
140static struct GNUNET_SCHEDULER_Task *cleanup_task;
141
137static void 142static void
138do_cleanup(void *cls) 143do_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
172static void 178static 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
185static void 191static 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
219static void 225static 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
229static void 236static 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
242static void 249static 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
314static void 321static void
@@ -351,13 +358,13 @@ iter_cb (void *cls,
351} 358}
352 359
353static void 360static void
354ego_iter_finished (void *cls) 361start_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 }