- Keep calm and carry on
[oweals/gnunet.git] / src / mesh / gnunet-service-mesh-new.c
index fee0545f0248b38d31514c58471cc2e974f7c9b9..2e8b094bdabd2d365fb310b47689ad2bbf8b2136 100644 (file)
@@ -35,6 +35,7 @@
  * - MAIN FUNCTIONS (main & run)
  *
  * TODO:
+ * - Backport r24764, r24767.
  * - error reporting (CREATE/CHANGE/ADD/DEL?) -- new message!
  * - partial disconnect reporting -- same as error reporting?
  * - add ping message
@@ -833,20 +834,53 @@ unsigned int debug_bck_ack;
 /***********************      GLOBAL VARIABLES     ****************************/
 /******************************************************************************/
 
+/************************** Configuration parameters **************************/
+
 /**
- * Configuration parameters
+ * How often to send tunnel keepalives. Tunnels timeout after 4 missed.
  */
 static struct GNUNET_TIME_Relative refresh_path_time;
+
+/**
+ * How often to PUT local application numbers in the DHT.
+ */
 static struct GNUNET_TIME_Relative app_announce_time;
+
+/**
+ * How often to PUT own ID in the DHT.
+ */
 static struct GNUNET_TIME_Relative id_announce_time;
-static struct GNUNET_TIME_Relative unacknowledged_wait_time;
+
+/**
+ * Maximum time allowed to connect to a peer found by string.
+ */
 static struct GNUNET_TIME_Relative connect_timeout;
+
+/**
+ * Default TTL for payload packets.
+ */
 static unsigned long long default_ttl;
+
+/**
+ * DHT replication level, see DHT API: GNUNET_DHT_get_start, GNUNET_DHT_put.
+ */
 static unsigned long long dht_replication_level;
+
+/**
+ * How many tunnels are we willing to maintain.
+ * Local tunnels are always allowed, even if there are more tunnels than max.
+ */
 static unsigned long long max_tunnels;
+
+/**
+ * How many messages *in total* are we willing to queue, divided by number of 
+ * tunnels to get tunnel queue size.
+ */
 static unsigned long long max_msgs_queue;
 
 
+/*************************** Static global variables **************************/
+
 /**
  * Hostkey generation context
  */
@@ -3372,12 +3406,18 @@ tunnel_add_client (struct MeshTunnel *t, struct MeshClient *c)
   struct MeshTunnelFlowControlInfo fcinfo;
 
   GNUNET_array_append (t->clients, t->nclients, c);
+  fcinfo.t = t;
   fcinfo.client = c;
+  fcinfo.peer = NULL;
   fcinfo.fwd_ack = t->fwd_pid + 1;
   fcinfo.bck_ack = t->nobuffer ? 1 : INITIAL_WINDOW_SIZE - 1;
   fcinfo.fwd_pid = t->fwd_pid;
   fcinfo.bck_pid = (uint32_t) -1; // Expected next: 0
   fcinfo.fc_poll = GNUNET_SCHEDULER_NO_TASK;
+  fcinfo.send_buffer = NULL;
+  fcinfo.send_buffer_n = 0;
+  fcinfo.send_buffer_start = 0;
+  fcinfo.skip = t->fwd_pid;
   // FIXME fc buffering is done by context_notify. Confirm this is OK.
 
   t->nclients--;
@@ -8295,18 +8335,6 @@ run (void *cls, struct GNUNET_SERVER_Handle *server,
   {
   }
 
-  if (GNUNET_OK !=
-      GNUNET_CONFIGURATION_get_value_time (c, "MESH", "UNACKNOWLEDGED_WAIT",
-                                           &unacknowledged_wait_time))
-  {
-    GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
-                _
-                ("%s service is lacking key configuration settings (%s).  Exiting.\n"),
-                "mesh", "unacknowledged wait time");
-    GNUNET_SCHEDULER_shutdown ();
-    return;
-  }
-
   if (GNUNET_OK !=
       GNUNET_CONFIGURATION_get_value_time (c, "MESH", "CONNECT_TIMEOUT",
                                            &connect_timeout))