aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBart Polot <bart@net.in.tum.de>2013-05-10 16:14:44 +0000
committerBart Polot <bart@net.in.tum.de>2013-05-10 16:14:44 +0000
commit244ce828b28118152d9eca3ba98fe0e031a1ebbb (patch)
treeedf654a0ccb5e1e03bd786f1d6d618fded7d4ff4
parentef14230266cc6f855622fbad1e482fb739756274 (diff)
downloadgnunet-244ce828b28118152d9eca3ba98fe0e031a1ebbb.tar.gz
gnunet-244ce828b28118152d9eca3ba98fe0e031a1ebbb.zip
- cancel poll when receiving big enough ack
-rw-r--r--src/mesh/gnunet-service-mesh-new.c24
1 files changed, 16 insertions, 8 deletions
diff --git a/src/mesh/gnunet-service-mesh-new.c b/src/mesh/gnunet-service-mesh-new.c
index 3252d2703..cf29e75ac 100644
--- 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,
4192 { 4192 {
4193 debug_bck_ack++; 4193 debug_bck_ack++;
4194 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, " FWD ACK\n"); 4194 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, " FWD ACK\n");
4195 if (GNUNET_SCHEDULER_NO_TASK != t->next_fc.poll_task &&
4196 GMC_is_pid_bigger (ack, t->next_fc.last_ack_recv))
4197 {
4198 GNUNET_SCHEDULER_cancel (t->next_fc.poll_task);
4199 t->next_fc.poll_task = GNUNET_SCHEDULER_NO_TASK;
4200 t->next_fc.poll_time = GNUNET_TIME_UNIT_SECONDS;
4201 }
4195 t->next_fc.last_ack_recv = ack; 4202 t->next_fc.last_ack_recv = ack;
4196 tunnel_send_fwd_ack (t, GNUNET_MESSAGE_TYPE_MESH_ACK);
4197 peer_unlock_queue (t->next_hop); 4203 peer_unlock_queue (t->next_hop);
4198// if (GNUNET_SCHEDULER_NO_TASK != cinfo->fc_poll) FIXME 4204 tunnel_send_fwd_ack (t, GNUNET_MESSAGE_TYPE_MESH_ACK);
4199// {
4200// GNUNET_SCHEDULER_cancel (cinfo->fc_poll);
4201// cinfo->fc_poll = GNUNET_SCHEDULER_NO_TASK;
4202// cinfo->fc_poll_time = GNUNET_TIME_UNIT_SECONDS;
4203// }
4204 } 4205 }
4205 else 4206 else
4206 { 4207 {
4207 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, " BCK ACK\n"); 4208 GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, " BCK ACK\n");
4209 if (GNUNET_SCHEDULER_NO_TASK != t->prev_fc.poll_task &&
4210 GMC_is_pid_bigger (ack, t->prev_fc.last_ack_recv))
4211 {
4212 GNUNET_SCHEDULER_cancel (t->prev_fc.poll_task);
4213 t->prev_fc.poll_task = GNUNET_SCHEDULER_NO_TASK;
4214 t->prev_fc.poll_time = GNUNET_TIME_UNIT_SECONDS;
4215 }
4208 t->prev_fc.last_ack_recv = ack; 4216 t->prev_fc.last_ack_recv = ack;
4209 tunnel_send_bck_ack (t, GNUNET_MESSAGE_TYPE_MESH_ACK);
4210 peer_unlock_queue (t->prev_hop); 4217 peer_unlock_queue (t->prev_hop);
4218 tunnel_send_bck_ack (t, GNUNET_MESSAGE_TYPE_MESH_ACK);
4211 } 4219 }
4212 return GNUNET_OK; 4220 return GNUNET_OK;
4213} 4221}