[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r28092 - gnunet/src/mesh
From: |
gnunet |
Subject: |
[GNUnet-SVN] r28092 - gnunet/src/mesh |
Date: |
Tue, 16 Jul 2013 14:50:06 +0200 |
Author: bartpolot
Date: 2013-07-16 14:50:06 +0200 (Tue, 16 Jul 2013)
New Revision: 28092
Modified:
gnunet/src/mesh/gnunet-service-mesh.c
Log:
-cancel polling on tunnel destruction/empty queue
Modified: gnunet/src/mesh/gnunet-service-mesh.c
===================================================================
--- gnunet/src/mesh/gnunet-service-mesh.c 2013-07-16 12:49:33 UTC (rev
28091)
+++ gnunet/src/mesh/gnunet-service-mesh.c 2013-07-16 12:50:06 UTC (rev
28092)
@@ -2248,7 +2248,7 @@
else if (0 != hop)
send_ack (t, hop, ack);
else
- GNUNET_break (0);
+ GNUNET_break (GNUNET_YES == t->destroy);
t->force_ack = GNUNET_NO;
}
@@ -2792,6 +2792,16 @@
peer_cancel_queues (t->next_hop, t);
GNUNET_PEER_change_rc (t->next_hop, -1);
}
+ if (GNUNET_SCHEDULER_NO_TASK != t->next_fc.poll_task)
+ {
+ GNUNET_SCHEDULER_cancel (t->next_fc.poll_task);
+ t->next_fc.poll_task = GNUNET_SCHEDULER_NO_TASK;
+ }
+ if (GNUNET_SCHEDULER_NO_TASK != t->prev_fc.poll_task)
+ {
+ GNUNET_SCHEDULER_cancel (t->prev_fc.poll_task);
+ t->prev_fc.poll_task = GNUNET_SCHEDULER_NO_TASK;
+ }
if (0 != t->dest) {
peer_info_remove_tunnel (peer_get_short (t->dest), t);
}
@@ -3395,19 +3405,19 @@
&queue_send,
peer);
}
+ if (peer->id == t->next_hop)
+ fc = &t->next_fc;
+ else if (peer->id == t->prev_hop)
+ fc = &t->prev_fc;
+ else
+ {
+ GNUNET_break (0);
+ GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "id: %u, next: %u, prev: %u\n",
+ peer->id, t->next_hop, t->prev_hop);
+ return data_size;
+ }
if (NULL != peer->queue_head)
{
- if (peer->id == t->next_hop)
- fc = &t->next_fc;
- else if (peer->id == t->prev_hop)
- fc = &t->prev_fc;
- else
- {
- GNUNET_break (0);
- GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "id: %u, next: %u, prev: %u\n",
- peer->id, t->next_hop, t->prev_hop);
- return data_size;
- }
if (GNUNET_SCHEDULER_NO_TASK == fc->poll_task && fc->queue_n > 0)
{
GNUNET_log (GNUNET_ERROR_TYPE_INFO,
@@ -3418,6 +3428,14 @@
&tunnel_poll, fc);
}
}
+ else
+ {
+ if (GNUNET_SCHEDULER_NO_TASK != fc->poll_task)
+ {
+ GNUNET_SCHEDULER_cancel (fc->poll_task);
+ fc->poll_task = GNUNET_SCHEDULER_NO_TASK;
+ }
+ }
if (GNUNET_YES == t->destroy && 0 == t->pending_messages)
{
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "* destroying tunnel!\n");
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r28092 - gnunet/src/mesh,
gnunet <=