diff options
author | Bart Polot <bart@net.in.tum.de> | 2013-05-10 16:14:44 +0000 |
---|---|---|
committer | Bart Polot <bart@net.in.tum.de> | 2013-05-10 16:14:44 +0000 |
commit | 244ce828b28118152d9eca3ba98fe0e031a1ebbb (patch) | |
tree | edf654a0ccb5e1e03bd786f1d6d618fded7d4ff4 | |
parent | ef14230266cc6f855622fbad1e482fb739756274 (diff) | |
download | gnunet-244ce828b28118152d9eca3ba98fe0e031a1ebbb.tar.gz gnunet-244ce828b28118152d9eca3ba98fe0e031a1ebbb.zip |
- cancel poll when receiving big enough ack
-rw-r--r-- | src/mesh/gnunet-service-mesh-new.c | 24 |
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 | } |