From 1b745661e4c5086e48ca5484814ad2c6220ba7b5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=D0=A0=C2=A0=D0=A1=D1=93=D0=A1=D0=83=D0=A0=C2=BB=D0=A0=C2=B0?=
 =?UTF-8?q?=D0=A0=D0=85=20=D0=A0=C2=98=D0=A0=C2=B6=D0=A0=C2=B1=D0=A1=D1=93=D0?=
 =?UTF-8?q?=A0=C2=BB=D0=A0=C2=B0=D0=A1=E2=80=9A=D0=A0=D1=95=D0=A0=D0=86?=
 <lrn1986@gmail.com>
Date: Fri, 14 Dec 2012 15:06:20 +0400
Subject: [PATCH] Don't forget to cancel old tasks in FS

---
 src/fs/gnunet-service-fs_pe.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/src/fs/gnunet-service-fs_pe.c b/src/fs/gnunet-service-fs_pe.c
index c7cac75..0992d21 100644
--- a/src/fs/gnunet-service-fs_pe.c
+++ b/src/fs/gnunet-service-fs_pe.c
@@ -391,6 +391,9 @@ transmit_message_callback (void *cls, size_t buf_size, void *buf)
   if (NULL == buf)
   {
     /* failed, try again... */
+    if (GNUNET_SCHEDULER_NO_TASK != pp->task)
+      GNUNET_SCHEDULER_cancel (pp->task);
+
     pp->task = GNUNET_SCHEDULER_add_now (&schedule_peer_transmission, pp);
     GNUNET_STATISTICS_update (GSF_stats,
                               gettext_noop
@@ -401,12 +404,16 @@ transmit_message_callback (void *cls, size_t buf_size, void *buf)
   rp = GNUNET_CONTAINER_heap_peek (pp->priority_heap);
   if (NULL == rp)
   {
+    if (GNUNET_SCHEDULER_NO_TASK != pp->task)
+      GNUNET_SCHEDULER_cancel (pp->task);
     pp->task = GNUNET_SCHEDULER_add_now (&schedule_peer_transmission, pp);
     return 0;
   }
   msize = GSF_pending_request_get_message_ (get_latest (rp), buf_size, buf);
   if (msize > buf_size)
   {
+    if (GNUNET_SCHEDULER_NO_TASK != pp->task)
+      GNUNET_SCHEDULER_cancel (pp->task);
     /* buffer to small (message changed), try again */
     pp->task = GNUNET_SCHEDULER_add_now (&schedule_peer_transmission, pp);
     return 0;
-- 
1.7.11

