author | Florian Forster <octo@leeloo.lan.home.verplant.org> | |
Wed, 18 Mar 2009 17:41:27 +0000 (18:41 +0100) | ||
committer | Florian Forster <octo@leeloo.lan.home.verplant.org> | |
Wed, 18 Mar 2009 17:41:27 +0000 (18:41 +0100) |
diff --git a/ChangeLog b/ChangeLog
index 10a4cc13183acb9204b3e2fc838ba7102d392410..924d40457d6bb816346c3d9e07bc2d576d5ef956 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
+2009-03-18, Version 4.6.2
+ * collectd: Some Solaris utility code has been improved.
+ * filter subsystem: Allow `Chains' without default targets.
+ * liboping: A patch to comply with strict aliasing rules has been
+ added.
+ * timediff match: Fix a typo: The match was registered with a wrong
+ name which prevented this match to be used as documented. Thanks to
+ Bruno Prémont for finding this problem.
+ * bind plugin: Fix collection of the cached RR sets. The number of RR
+ sets currently in the cache was collected as a counter value, which
+ is nonsense. Thanks to Bruno Prémont for implementing this.
+ * dns plugin: Don't pass NULL to `pcap_open_live': Some systems,
+ primarily BSDs, don't take it well and crash.
+ * oracle plugin: Portability to 64 bit systems has been improved.
+ * postgresql plugin: The default configuration has been improved.
+ * rrdtool plugin: Fix a possible race condition: If the network plugin
+ is brought and dispatches a value before the rrdtool plugin is
+ initialized, the daemon may crash.
+
2009-02-22, Version 4.6.1
* collectd: Many documentation fixes.
* Collectd::Unixsock: Error handling has been improved.
diff --git a/configure.in b/configure.in
index c7cd1ba7baeb819c9c21fe1119fcf93e01aebee0..9471cfaf341806593b18cfeaca1ec86137977286 100644 (file)
--- a/configure.in
+++ b/configure.in
AC_FUNC_STRERROR_R
AC_CACHE_CHECK([for strtok_r],
- [have_strtok_r_default],
+ [c_cv_have_strtok_r_default],
AC_LINK_IFELSE(
AC_LANG_PROGRAM(
[[[[
printf ("token = %s;\n", token);
}
]]]]),
- [have_strtok_r_default="yes"],
- [have_strtok_r_default="no"]
+ [c_cv_have_strtok_r_default="yes"],
+ [c_cv_have_strtok_r_default="no"]
)
)
-if test "x$have_strtok_r_default" = "xno"
+if test "x$c_cv_have_strtok_r_default" = "xno"
then
SAVE_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS -D_REENTRANT=1"
AC_CACHE_CHECK([if strtok_r needs _REENTRANT],
- [have_strtok_r_reentrant],
+ [c_cv_have_strtok_r_reentrant],
AC_LINK_IFELSE(
AC_LANG_PROGRAM(
[[[[
printf ("token = %s;\n", token);
}
]]]]),
- [have_strtok_r_reentrant="yes"],
+ [c_cv_have_strtok_r_reentrant="yes"],
[AC_MSG_FAILURE([strtok_r isn't available. Please file a bugreport!])]
)
)
@@ -510,7 +510,7 @@ AC_ARG_WITH(nan-emulation, [AS_HELP_STRING([--with-nan-emulation], [use emulated
[nan_type="none"])
if test "x$nan_type" = "xnone"; then
AC_CACHE_CHECK([whether NAN is defined by default],
- [have_nan_default],
+ [c_cv_have_nan_default],
AC_COMPILE_IFELSE(
AC_LANG_PROGRAM(
[[
else
return 1;
]]),
- [have_nan_default="yes"],
- [have_nan_default="no"]
+ [c_cv_have_nan_default="yes"],
+ [c_cv_have_nan_default="no"]
)
)
- if test "x$have_nan_default" = "xyes"
+ if test "x$c_cv_have_nan_default" = "xyes"
then
nan_type="default"
fi
fi
if test "x$nan_type" = "xnone"; then
AC_CACHE_CHECK([whether NAN is defined by __USE_ISOC99],
- [have_nan_isoc],
+ [c_cv_have_nan_isoc],
AC_COMPILE_IFELSE(
AC_LANG_PROGRAM(
[[
else
return 1;
]]),
- [have_nan_isoc="yes"],
- [have_nan_isoc="no"]
+ [c_cv_have_nan_isoc="yes"],
+ [c_cv_have_nan_isoc="no"]
)
)
- if test "x$have_nan_isoc" = "xyes"
+ if test "x$c_cv_have_nan_isoc" = "xyes"
then
nan_type="isoc99"
fi
fi
if test "x$nan_type" = "xnone"; then
AC_CACHE_CHECK([whether NAN can be defined by 0/0],
- [have_nan_zero],
+ [c_cv_have_nan_zero],
AC_RUN_IFELSE(
AC_LANG_PROGRAM(
[[
else
return 1;
]]),
- [have_nan_zero="yes"],
- [have_nan_zero="no"]
+ [c_cv_have_nan_zero="yes"],
+ [c_cv_have_nan_zero="no"]
)
)
- if test "x$have_nan_zero" = "xyes"
+ if test "x$c_cv_have_nan_zero" = "xyes"
then
nan_type="zero"
fi
if test "x$fp_layout_type" = "xunknown"; then
AC_CACHE_CHECK([if doubles are stored in x86 representation],
- [fp_layout_need_nothing],
+ [c_cv_fp_layout_need_nothing],
AC_RUN_IFELSE(
AC_LANG_PROGRAM(
[[[[
else
return (1);
]]]]),
- [fp_layout_need_nothing="yes"],
- [fp_layout_need_nothing="no"]
+ [c_cv_fp_layout_need_nothing="yes"],
+ [c_cv_fp_layout_need_nothing="no"]
)
)
- if test "x$fp_layout_need_nothing" = "xyes"; then
+ if test "x$c_cv_fp_layout_need_nothing" = "xyes"; then
fp_layout_type="nothing"
fi
fi
if test "x$fp_layout_type" = "xunknown"; then
AC_CACHE_CHECK([if endianflip converts to x86 representation],
- [fp_layout_need_endianflip],
+ [c_cv_fp_layout_need_endianflip],
AC_RUN_IFELSE(
AC_LANG_PROGRAM(
[[[[
else
return (1);
]]]]),
- [fp_layout_need_endianflip="yes"],
- [fp_layout_need_endianflip="no"]
+ [c_cv_fp_layout_need_endianflip="yes"],
+ [c_cv_fp_layout_need_endianflip="no"]
)
)
- if test "x$fp_layout_need_endianflip" = "xyes"; then
+ if test "x$c_cv_fp_layout_need_endianflip" = "xyes"; then
fp_layout_type="endianflip"
fi
fi
if test "x$fp_layout_type" = "xunknown"; then
AC_CACHE_CHECK([if intswap converts to x86 representation],
- [fp_layout_need_intswap],
+ [c_cv_fp_layout_need_intswap],
AC_RUN_IFELSE(
AC_LANG_PROGRAM(
[[[[
else
return (1);
]]]]),
- [fp_layout_need_intswap="yes"],
- [fp_layout_need_intswap="no"]
+ [c_cv_fp_layout_need_intswap="yes"],
+ [c_cv_fp_layout_need_intswap="no"]
)
)
- if test "x$fp_layout_need_intswap" = "xyes"; then
+ if test "x$c_cv_fp_layout_need_intswap" = "xyes"; then
fp_layout_type="intswap"
fi
fi
if test "x$have_getmntent" = "xc"; then
AC_CACHE_CHECK([whether getmntent takes one argument],
- [have_one_getmntent],
+ [c_cv_have_one_getmntent],
AC_COMPILE_IFELSE(
AC_LANG_PROGRAM([[AC_INCLUDES_DEFAULT
#include <mntent.h>
me = getmntent (fh);
]]
),
- [have_one_getmntent="yes"],
- [have_one_getmntent="no"]
+ [c_cv_have_one_getmntent="yes"],
+ [c_cv_have_one_getmntent="no"]
)
)
AC_CACHE_CHECK([whether getmntent takes two arguments],
- [have_two_getmntent],
+ [c_cv_have_two_getmntent],
AC_COMPILE_IFELSE(
AC_LANG_PROGRAM([[AC_INCLUDES_DEFAULT
#include <sys/mnttab.h>
status = getmntent (fh, &mt);
]]
),
- [have_two_getmntent="yes"],
- [have_two_getmntent="no"]
+ [c_cv_have_two_getmntent="yes"],
+ [c_cv_have_two_getmntent="no"]
)
)
fi
# Check for different versions of `getmntent' here..
if test "x$have_getmntent" = "xc"; then
- if test "x$have_one_getmntent" = "xyes"; then
+ if test "x$c_cv_have_one_getmntent" = "xyes"; then
AC_DEFINE(HAVE_ONE_GETMNTENT, 1,
[Define if the function getmntent exists and takes one argument.])
fi
- if test "x$have_two_getmntent" = "xyes"; then
+ if test "x$c_cv_have_two_getmntent" = "xyes"; then
AC_DEFINE(HAVE_TWO_GETMNTENT, 1,
[Define if the function getmntent exists and takes two arguments.])
fi
LDFLAGS="$LDFLAGS $PERL_LDFLAGS"
AC_CACHE_CHECK([for libperl],
- [have_libperl],
+ [c_cv_have_libperl],
AC_LINK_IFELSE(
AC_LANG_PROGRAM(
[[
newSVpv ("Collectd::Plugin::FooBar", 24),
Nullsv);
]]),
- [have_libperl="yes"],
- [have_libperl="no"]
+ [c_cv_have_libperl="yes"],
+ [c_cv_have_libperl="no"]
)
)
- if test "x$have_libperl" = "xyes"
+ if test "x$c_cv_have_libperl" = "xyes"
then
AC_DEFINE(HAVE_LIBPERL, 1, [Define if libperl is present and usable.])
AC_SUBST(PERL_CFLAGS)
LDFLAGS=$SAVE_LDFLAGS
else if test -z "$perl_interpreter"; then
with_libperl="no (no perl interpreter found)"
- have_libperl="no"
+ c_cv_have_libperl="no"
fi; fi
AM_CONDITIONAL(BUILD_WITH_LIBPERL, test "x$with_libperl" = "xyes")
LDFLAGS="$LDFLAGS $PERL_LDFLAGS"
AC_CACHE_CHECK([if perl supports ithreads],
- [have_perl_ithreads],
+ [c_cv_have_perl_ithreads],
AC_LINK_IFELSE(
AC_LANG_PROGRAM(
[[
#endif /* !defined(USE_ITHREADS) */
]],
[[ ]]),
- [have_perl_ithreads="yes"],
- [have_perl_ithreads="no"]
+ [c_cv_have_perl_ithreads="yes"],
+ [c_cv_have_perl_ithreads="no"]
)
)
- if test "x$have_perl_ithreads" = "xyes"
+ if test "x$c_cv_have_perl_ithreads" = "xyes"
then
AC_DEFINE(HAVE_PERL_ITHREADS, 1, [Define if Perl supports ithreads.])
fi
LDFLAGS=$SAVE_LDFLAGS
fi
-have_broken_perl_load_module="no"
+c_cv_have_broken_perl_load_module="no"
if test "x$with_libperl" = "xyes"
then
SAVE_CFLAGS=$CFLAGS
LDFLAGS="$LDFLAGS $PERL_LDFLAGS"
AC_CACHE_CHECK([for broken Perl_load_module()],
- [have_broken_perl_load_module],
+ [c_cv_have_broken_perl_load_module],
AC_LINK_IFELSE(
AC_LANG_PROGRAM(
[[
newSVpv ("Collectd::Plugin::FooBar", 24),
Nullsv);
]]),
- [have_broken_perl_load_module="no"],
- [have_broken_perl_load_module="yes"]
+ [c_cv_have_broken_perl_load_module="no"],
+ [c_cv_have_broken_perl_load_module="yes"]
)
)
LDFLAGS=$SAVE_LDFLAGS
fi
AM_CONDITIONAL(HAVE_BROKEN_PERL_LOAD_MODULE,
- test "x$have_broken_perl_load_module" = "xyes")
+ test "x$c_cv_have_broken_perl_load_module" = "xyes")
if test "x$with_libperl" = "xyes"
then
plugin_load="yes"
fi
-if test "x$have_libperl$have_perl_ithreads" = "xyesyes"
+if test "x$c_cv_have_libperl$c_cv_have_perl_ithreads" = "xyesyes"
then
plugin_perl="yes"
fi
diff --git a/src/collectd.conf.in b/src/collectd.conf.in
index ae8913fdb0905d64488ffdc367389d28c513d222..5af9e0663048c46e5d75b5c052b628e3b6161697 100644 (file)
--- a/src/collectd.conf.in
+++ b/src/collectd.conf.in
# Load required matches:
#@BUILD_PLUGIN_MATCH_REGEX_TRUE@LoadPlugin match_regex
#@BUILD_PLUGIN_MATCH_VALUE_TRUE@LoadPlugin match_value
+#@BUILD_PLUGIN_MATCH_TIMEDIFF_TRUE@LoadPlugin match_timediff
# Load required targets:
#@BUILD_PLUGIN_TARGET_NOTIFICATION_TRUE@LoadPlugin target_notification
diff --git a/src/configfile.c b/src/configfile.c
index bb1770d2ab13e8c8a26c84901dd9e012dd0fc9a7..c929d0097aef6279db09c61411442cf3ddef99aa 100644 (file)
--- a/src/configfile.c
+++ b/src/configfile.c
cf_default_typesdb = 0;
- if (ci->values_num < 1)
+ if (ci->values_num < 1) {
+ ERROR ("configfile: `TypesDB' needs at least one argument.");
return (-1);
+ }
for (i = 0; i < ci->values_num; ++i)
{
- if (OCONFIG_TYPE_STRING != ci->values[i].type)
+ if (OCONFIG_TYPE_STRING != ci->values[i].type) {
+ WARNING ("configfile: TypesDB: Skipping %i. argument which "
+ "is not a string.", i + 1);
continue;
+ }
read_types_list (ci->values[i].value.string);
}
diff --git a/src/filter_chain.c b/src/filter_chain.c
index 9a52f7c99504179cfdf43f6d2266b9a2c2f81be7..01688ee2d397b8cb3f1ee14f73bbac560b2d7c46 100644 (file)
--- a/src/filter_chain.c
+++ b/src/filter_chain.c
break;
} /* for (ci->children) */
- /* Additional sanity checking. */
- while (status == 0)
- {
- if (chain->targets == NULL)
- {
- WARNING ("Filter subsystem: Chain %s: No default target has been "
- "specified. Please make sure that there is a <Target> block within "
- "the <Chain> block!", chain->name);
- status = -1;
- break;
- }
-
- break;
- } /* while (status == 0) */
-
if (status != 0)
{
fc_free_chains (chain);
index 13bcc92088e58a35a7ed1dc96d6b1025b353bd7b..fb3f843178ba800c6230e67e0d780d90bd284fb4 100644 (file)
--- a/src/liboping/liboping.c
+++ b/src/liboping/liboping.c
{
pinghost_t *ph;
- struct sockaddr_storage sockaddr;
- socklen_t sockaddr_len;
-
struct addrinfo ai_hints;
struct addrinfo *ai_list, *ai_ptr;
int ai_return;
{
ph->fd = -1;
- sockaddr_len = sizeof (sockaddr);
- memset (&sockaddr, '\0', sockaddr_len);
-
if (ai_ptr->ai_family == AF_INET)
{
- struct sockaddr_in *si;
-
- si = (struct sockaddr_in *) &sockaddr;
- si->sin_family = AF_INET;
- si->sin_port = htons (ph->ident);
- si->sin_addr.s_addr = htonl (INADDR_ANY);
-
ai_ptr->ai_socktype = SOCK_RAW;
ai_ptr->ai_protocol = IPPROTO_ICMP;
}
else if (ai_ptr->ai_family == AF_INET6)
{
- struct sockaddr_in6 *si;
-
- si = (struct sockaddr_in6 *) &sockaddr;
- si->sin6_family = AF_INET6;
- si->sin6_port = htons (ph->ident);
- si->sin6_addr = in6addr_any;
-
ai_ptr->ai_socktype = SOCK_RAW;
ai_ptr->ai_protocol = IPPROTO_ICMPV6;
}
diff --git a/src/match_timediff.c b/src/match_timediff.c
index 673c8d9def7a93ebf747faa20a42ba9bdcd35fba..4ac944afe3dfb58f45b9df2ecea2e1300d5cadec 100644 (file)
--- a/src/match_timediff.c
+++ b/src/match_timediff.c
mproc.create = mt_create;
mproc.destroy = mt_destroy;
mproc.match = mt_match;
- fc_register_match ("value", mproc);
+ fc_register_match ("timediff", mproc);
} /* module_register */
/* vim: set sw=2 sts=2 tw=78 et fdm=marker : */
diff --git a/src/types_list.c b/src/types_list.c
index 7600c346ecc1e8c901460a029c2ead4c167e5576..ed832fee0baf7721a1de9ab5610741d283882332 100644 (file)
--- a/src/types_list.c
+++ b/src/types_list.c
if (fh == NULL)
{
char errbuf[1024];
- ERROR ("open (%s) failed: %s",
+ fprintf (stderr, "Failed to open types database `%s': %s.\n",
+ file, sstrerror (errno, errbuf, sizeof (errbuf)));
+ ERROR ("Failed to open types database `%s': %s",
file, sstrerror (errno, errbuf, sizeof (errbuf)));
return (-1);
}
diff --git a/src/utils_cache.c b/src/utils_cache.c
index b2f2c36b7223b87b53266ed121c3bdc9bc1a27ed..a63c7d1c9b1cba770447a6a9080d0c6a6c7ea235 100644 (file)
--- a/src/utils_cache.c
+++ b/src/utils_cache.c
if (FORMAT_VL (name, sizeof (name), vl, ds) != 0)
{
- ERROR ("uc_insert: FORMAT_VL failed.");
+ ERROR ("utils_cache: uc_get_rate: FORMAT_VL failed.");
return (NULL);
}
diff --git a/version-gen.sh b/version-gen.sh
index 69e4f9a16636b216e8eead2a41a96a070e1d09c4..a1dcaa7281b9188f7afbb1357335fecb7f998bfc 100755 (executable)
--- a/version-gen.sh
+++ b/version-gen.sh
#!/bin/sh
-DEFAULT_VERSION="4.6.1.git"
+DEFAULT_VERSION="4.6.2.git"
VERSION="$( git describe 2> /dev/null | sed -e 's/^collectd-//' )"