network: set ttl before opening server sockets
authorTim Laszlo <Tim.Laszlo@magnetar.com>
Fri, 20 Jun 2014 14:00:43 +0000 (09:00 -0500)
committerMarc Fournier <marc.fournier@camptocamp.com>
Fri, 10 Apr 2015 11:41:23 +0000 (13:41 +0200)
If TimeToLive is defined in collectd.conf after Server options, the
net_config_ttl value is updated after network_config_add_server and
the desired ttl is not used.

src/network.c

index 9c9e83c..5d485ba 100644 (file)
@@ -3252,6 +3252,14 @@ static int network_config (oconfig_item_t *ci) /* {{{ */
 {
   int i;
 
+  /* The options need to be applied first */
+  for (i = 0; i < ci->children_num; i++)
+  {
+    oconfig_item_t *child = ci->children + i;
+    if (strcasecmp ("TimeToLive", child->key) == 0)
+      network_config_set_ttl (child);
+  }
+
   for (i = 0; i < ci->children_num; i++)
   {
     oconfig_item_t *child = ci->children + i;
@@ -3260,8 +3268,9 @@ static int network_config (oconfig_item_t *ci) /* {{{ */
       network_config_add_listen (child);
     else if (strcasecmp ("Server", child->key) == 0)
       network_config_add_server (child);
-    else if (strcasecmp ("TimeToLive", child->key) == 0)
-      network_config_set_ttl (child);
+    else if (strcasecmp ("TimeToLive", child->key) == 0) {
+      /* Handled earlier */
+    }
     else if (strcasecmp ("MaxPacketSize", child->key) == 0)
       network_config_set_buffer_size (child);
     else if (strcasecmp ("Forward", child->key) == 0)