{
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
"Transmission of request failed, will try again later.\n");
- pr->task = GNUNET_SCHEDULER_add_delayed (sched,
- get_processing_delay (),
- &forward_request_task,
- pr);
+ if (pr->task == GNUNET_SCHEDULER_NO_TASK)
+ pr->task = GNUNET_SCHEDULER_add_delayed (sched,
+ get_processing_delay (),
+ &forward_request_task,
+ pr);
return;
}
GNUNET_STATISTICS_update (stats,
pr->used_pids_size,
pr->used_pids_size * 2 + 2);
pr->used_pids[pr->used_pids_off++] = tpid;
- pr->task = GNUNET_SCHEDULER_add_delayed (sched,
- get_processing_delay (),
- &forward_request_task,
- pr);
+ if (pr->task == GNUNET_SCHEDULER_NO_TASK)
+ pr->task = GNUNET_SCHEDULER_add_delayed (sched,
+ get_processing_delay (),
+ &forward_request_task,
+ pr);
}
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
"Selected peer disconnected!\n");
#endif
- pr->task = GNUNET_SCHEDULER_add_delayed (sched,
- get_processing_delay (),
- &forward_request_task,
- pr);
+ if (pr->task == GNUNET_SCHEDULER_NO_TASK)
+ pr->task = GNUNET_SCHEDULER_add_delayed (sched,
+ get_processing_delay (),
+ &forward_request_task,
+ pr);
return;
}
no_route = GNUNET_NO;
gettext_noop ("# reply bandwidth reservation requests failed"),
1,
GNUNET_NO);
- pr->task = GNUNET_SCHEDULER_add_delayed (sched,
- get_processing_delay (),
- &forward_request_task,
- pr);
+ if (pr->task == GNUNET_SCHEDULER_NO_TASK)
+ pr->task = GNUNET_SCHEDULER_add_delayed (sched,
+ get_processing_delay (),
+ &forward_request_task,
+ pr);
return; /* this target round failed */
}
/* FIXME: if we are "quite" busy, we may still want to skip
struct ConnectedPeer *cp;
pr->task = GNUNET_SCHEDULER_NO_TASK;
- GNUNET_assert (pr->irc == NULL);
+ if (pr->irc != NULL)
+ return; /* already pending */
/* (1) select target */
psc.pr = pr;
psc.target_score = DBL_MIN;