struct NSEPeerEntry *peer_entry = cls;
peer_entry->transmit_task = GNUNET_SCHEDULER_NO_TASK;
+ GNUNET_assert (NULL == peer_entry->th);
peer_entry->th
= GNUNET_CORE_notify_transmit_ready (coreAPI,
GNUNET_NO,
(peer_entry->previous_round == GNUNET_YES) )
peer_entry->previous_round = GNUNET_NO;
/* push back our result now, that peer is spreading bad information... */
- if (peer_entry->transmit_task != GNUNET_SCHEDULER_NO_TASK)
- GNUNET_SCHEDULER_cancel (peer_entry->transmit_task);
- peer_entry->transmit_task = GNUNET_SCHEDULER_add_now (&transmit_task,
- peer_entry);
+ if (NULL == peer_entry->th)
+ {
+ if (peer_entry->transmit_task != GNUNET_SCHEDULER_NO_TASK)
+ GNUNET_SCHEDULER_cancel (peer_entry->transmit_task);
+ peer_entry->transmit_task = GNUNET_SCHEDULER_add_now (&transmit_task,
+ peer_entry);
+ }
/* Not closer than our most recent message, no need to do work here */
GNUNET_STATISTICS_update (stats,
"# flood messages ignored (had closer already)",
if (pos->transmit_task != GNUNET_SCHEDULER_NO_TASK)
GNUNET_SCHEDULER_cancel (pos->transmit_task);
if (pos->th != NULL)
- GNUNET_CORE_notify_transmit_ready_cancel (pos->th);
+ {
+ GNUNET_CORE_notify_transmit_ready_cancel (pos->th);
+ pos->th = NULL;
+ }
GNUNET_free(pos);
}