projects
/
oweals
/
gnunet.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
ef14230
)
- cancel poll when receiving big enough ack
author
Bart Polot
<bart@net.in.tum.de>
Fri, 10 May 2013 16:14:44 +0000
(16:14 +0000)
committer
Bart Polot
<bart@net.in.tum.de>
Fri, 10 May 2013 16:14:44 +0000
(16:14 +0000)
src/mesh/gnunet-service-mesh-new.c
patch
|
blob
|
history
diff --git
a/src/mesh/gnunet-service-mesh-new.c
b/src/mesh/gnunet-service-mesh-new.c
index 3252d2703d78a951be985956f98fe979378b15af..cf29e75ac9a2ab43ca32a4a1f041edde7bd7356b 100644
(file)
--- a/
src/mesh/gnunet-service-mesh-new.c
+++ b/
src/mesh/gnunet-service-mesh-new.c
@@
-4192,22
+4192,30
@@
handle_mesh_ack (void *cls, const struct GNUNET_PeerIdentity *peer,
{
debug_bck_ack++;
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, " FWD ACK\n");
{
debug_bck_ack++;
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, " FWD ACK\n");
+ if (GNUNET_SCHEDULER_NO_TASK != t->next_fc.poll_task &&
+ GMC_is_pid_bigger (ack, t->next_fc.last_ack_recv))
+ {
+ GNUNET_SCHEDULER_cancel (t->next_fc.poll_task);
+ t->next_fc.poll_task = GNUNET_SCHEDULER_NO_TASK;
+ t->next_fc.poll_time = GNUNET_TIME_UNIT_SECONDS;
+ }
t->next_fc.last_ack_recv = ack;
t->next_fc.last_ack_recv = ack;
- tunnel_send_fwd_ack (t, GNUNET_MESSAGE_TYPE_MESH_ACK);
peer_unlock_queue (t->next_hop);
peer_unlock_queue (t->next_hop);
-// if (GNUNET_SCHEDULER_NO_TASK != cinfo->fc_poll) FIXME
-// {
-// GNUNET_SCHEDULER_cancel (cinfo->fc_poll);
-// cinfo->fc_poll = GNUNET_SCHEDULER_NO_TASK;
-// cinfo->fc_poll_time = GNUNET_TIME_UNIT_SECONDS;
-// }
+ tunnel_send_fwd_ack (t, GNUNET_MESSAGE_TYPE_MESH_ACK);
}
else
{
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, " BCK ACK\n");
}
else
{
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, " BCK ACK\n");
+ if (GNUNET_SCHEDULER_NO_TASK != t->prev_fc.poll_task &&
+ GMC_is_pid_bigger (ack, t->prev_fc.last_ack_recv))
+ {
+ GNUNET_SCHEDULER_cancel (t->prev_fc.poll_task);
+ t->prev_fc.poll_task = GNUNET_SCHEDULER_NO_TASK;
+ t->prev_fc.poll_time = GNUNET_TIME_UNIT_SECONDS;
+ }
t->prev_fc.last_ack_recv = ack;
t->prev_fc.last_ack_recv = ack;
- tunnel_send_bck_ack (t, GNUNET_MESSAGE_TYPE_MESH_ACK);
peer_unlock_queue (t->prev_hop);
peer_unlock_queue (t->prev_hop);
+ tunnel_send_bck_ack (t, GNUNET_MESSAGE_TYPE_MESH_ACK);
}
return GNUNET_OK;
}
}
return GNUNET_OK;
}