- initialize timers
authorBart Polot <bart@net.in.tum.de>
Sat, 30 Nov 2013 01:31:11 +0000 (01:31 +0000)
committerBart Polot <bart@net.in.tum.de>
Sat, 30 Nov 2013 01:31:11 +0000 (01:31 +0000)
src/mesh/gnunet-service-mesh_channel.c

index 0739ad021a4c2c4c9a57b90036340fc0006649df..5a97cb6555296da04d60dd70676d0ecce11cddc6 100644 (file)
@@ -733,7 +733,10 @@ ch_message_sent (void *cls,
       GNUNET_assert (rel->uniq == ch_q);
       if (MESH_CHANNEL_READY != rel->ch->state)
       {
+        struct GNUNET_TIME_Relative delay;
+
         GNUNET_assert (GNUNET_SCHEDULER_NO_TASK == rel->retry_task);
+        rel->retry_timer = GNUNET_TIME_STD_BACKOFF (rel->retry_timer);
         rel->retry_task = GNUNET_SCHEDULER_add_delayed (rel->retry_timer,
                                                         &channel_recreate, rel);
       }
@@ -1041,6 +1044,7 @@ channel_confirm (struct MeshChannel *ch, int fwd)
 
   rel = fwd ? ch->root_rel : ch->dest_rel;
   rel->client_ready = GNUNET_YES;
+  rel->expected_delay = rel->retry_timer;
   send_client_ack (ch, fwd);
 
   if (GNUNET_SCHEDULER_NO_TASK != rel->retry_task)
@@ -1732,6 +1736,7 @@ GMCH_handle_local_create (struct MeshClient *c,
   /* In unreliable channels, we'll use the DLL to buffer BCK data */
   ch->root_rel = GNUNET_new (struct MeshChannelReliability);
   ch->root_rel->ch = ch;
+  ch->root_rel->retry_timer = GNUNET_TIME_UNIT_SECONDS;
   ch->root_rel->expected_delay.rel_value_us = 0;
 
   LOG (GNUNET_ERROR_TYPE_DEBUG, "CREATED CHANNEL %s\n", GMCH_2s (ch));