Merge branch 'collectd-5.6' into collectd-5.7
[collectd.git] / src / bind.c
index 4860f1b..8a3148c 100644 (file)
@@ -138,7 +138,7 @@ static const translation_info_t nsstats_translation_table[] = /* {{{ */
         {"ReqBadSIG", "dns_request", "BadSIG"},
         {"ReqTCP", "dns_request", "TCP"},
         /* Rejects */
-        {"AuthQryRej", "dns_reject", "authorative"},
+        {"AuthQryRej", "dns_reject", "authoritative"},
         {"RecQryRej", "dns_reject", "recursive"},
         {"XfrRej", "dns_reject", "transfer"},
         {"UpdateRej", "dns_reject", "update"},
@@ -149,11 +149,11 @@ static const translation_info_t nsstats_translation_table[] = /* {{{ */
         {"RespTSIG", "dns_response", "TSIG"},
         {"RespSIG0", "dns_response", "SIG0"},
         /* Queries */
-        {"QryAuthAns", "dns_query", "authorative"},
+        {"QryAuthAns", "dns_query", "authoritative"},
         {"QryNoauthAns", "dns_query", "nonauth"},
         {"QryReferral", "dns_query", "referral"},
         {"QryRecursion", "dns_query", "recursion"},
-        {"QryDuplicate", "dns_query", "dupliate"},
+        {"QryDuplicate", "dns_query", "duplicate"},
         {"QryDropped", "dns_query", "dropped"},
         {"QryFailure", "dns_query", "failure"},
         /* Response codes */
@@ -163,13 +163,13 @@ static const translation_info_t nsstats_translation_table[] = /* {{{ */
         {"QryFORMERR", "dns_rcode", "tx-FORMERR"},
         {"QryNXDOMAIN", "dns_rcode", "tx-NXDOMAIN"}
 #if 0
-  { "XfrReqDone",      "type", "type_instance"       },
-  { "UpdateReqFwd",    "type", "type_instance"       },
-  { "UpdateRespFwd",   "type", "type_instance"       },
-  { "UpdateFwdFail",   "type", "type_instance"       },
-  { "UpdateDone",      "type", "type_instance"       },
-  { "UpdateFail",      "type", "type_instance"       },
-  { "UpdateBadPrereq", "type", "type_instance"       },
+  { "XfrReqDone",      "type",         "type_instance" },
+  { "UpdateReqFwd",    "type",         "type_instance" },
+  { "UpdateRespFwd",   "type",         "type_instance" },
+  { "UpdateFwdFail",   "type",         "type_instance" },
+  { "UpdateDone",      "type",         "type_instance" },
+  { "UpdateFail",      "type",         "type_instance" },
+  { "UpdateBadPrereq", "type",         "type_instance" },
 #endif
 };
 static int nsstats_translation_table_length =
@@ -246,16 +246,12 @@ static int memsummary_translation_table_length =
 
 static void submit(time_t ts, const char *plugin_instance, /* {{{ */
                    const char *type, const char *type_instance, value_t value) {
-  value_t values[1];
   value_list_t vl = VALUE_LIST_INIT;
 
-  values[0] = value;
-
-  vl.values = values;
+  vl.values = &value;
   vl.values_len = 1;
   if (config_parse_time)
     vl.time = TIME_T_TO_CDTIME_T(ts);
-  sstrncpy(vl.host, hostname_g, sizeof(vl.host));
   sstrncpy(vl.plugin, "bind", sizeof(vl.plugin));
   if (plugin_instance) {
     sstrncpy(vl.plugin_instance, plugin_instance, sizeof(vl.plugin_instance));
@@ -526,8 +522,10 @@ static int bind_parse_generic_name_value(const char *xpath_expression, /* {{{ */
         status = bind_xml_read_gauge(doc, counter, &value.gauge);
       else
         status = bind_xml_read_derive(doc, counter, &value.derive);
-      if (status != 0)
+      if (status != 0) {
+        xmlFree(name);
         continue;
+      }
 
       status = (*list_callback)(name, value, current_time, user_data);
       if (status == 0)
@@ -659,12 +657,16 @@ static int bind_parse_generic_name_attr_value_list(
         status = bind_xml_read_gauge(doc, child, &value.gauge);
       else
         status = bind_xml_read_derive(doc, child, &value.derive);
-      if (status != 0)
+      if (status != 0) {
+        xmlFree(attr_name);
         continue;
+      }
 
       status = (*list_callback)(attr_name, value, current_time, user_data);
       if (status == 0)
         num_entries++;
+
+      xmlFree(attr_name);
     }
   }
 
@@ -1596,7 +1598,6 @@ static int bind_init(void) /* {{{ */
   curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, bind_curl_callback);
   curl_easy_setopt(curl, CURLOPT_USERAGENT, COLLECTD_USERAGENT);
   curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, bind_curl_error);
-  curl_easy_setopt(curl, CURLOPT_URL, (url != NULL) ? url : BIND_DEFAULT_URL);
   curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
   curl_easy_setopt(curl, CURLOPT_MAXREDIRS, 50L);
 #ifdef HAVE_CURLOPT_TIMEOUT_MS
@@ -1618,6 +1619,9 @@ static int bind_read(void) /* {{{ */
   }
 
   bind_buffer_fill = 0;
+
+  curl_easy_setopt(curl, CURLOPT_URL, (url != NULL) ? url : BIND_DEFAULT_URL);
+
   if (curl_easy_perform(curl) != CURLE_OK) {
     ERROR("bind plugin: curl_easy_perform failed: %s", bind_curl_error);
     return (-1);