Gergely Nagy <algernon@balabit.hu> writes:
Modify configure.in to recognise a suitable version (>= 0.1.0) of the libmongo-client library, and use it instead of the internal version if requested so.
Also, please update the internal libmongo-client to v0.1.0, released a couple of hours ago. (It is tagged v0.1.0 in the upstream git tree at git://github.com/algernon/libmongo-client.git) The new version is API compatible (but not ABI compatible) with the current internal version, at least when considering the functions that the mongodb driver uses, so no other changes are neccessary. If the internal version needs to be statically linked by default, then a configure.gnu file should be added, similar to how it's done with lib/ivykis (the same file should work, actually). Compared to the current internal version, tons of fixes and enhancements went into the library. Though, most of those do not affect syslog-ng, as it uses very little of the library (so far, but I have plans to add a lot of neat stuff to the mongodb destination that depend on the new library version). Notable improvements that affect the current mongodb destination driver: * IPv6 and hostname support. Previously, the library - and in turn, the mongodb destination - only recognised dotted-decimal IPv4 addresses. * Endianness fixes. Parts of the Mongo wire protocol were sent in host endianness instead of little-endian (the request ID, in particular). * Use sendmsg() to send packets over the wire, which allows us to ignore SIGPIPE easily (and make the call return an error instead of raising a signal) on systems where MSG_NOSIGNAL is supported. * Faster and better memory allocations: instead of going to great lengths to ensure that memory allocations succeed, leave it up to glib to handle OOM cases and abort. This gets rid of a lot of if branches on fast paths. In certain cases, allocations were adjusted to reserve the proper amount of memory as soon as possible, so arrays won't have to grow later on. * Better test suite! 68% code coverage without tests that require a working mongodb setup, and over 95% when the full test suite is ran. This new version has also been tested on a number of platforms (including, but not limited to recent Linux platforms (debian stable & unstable), FreeBSD 8, Solaris (OpenSolaris and OpenIndiana), Debian GNU/kFreeBSD, different architectures (amd64, x86, ppc, armel)) and the test suite passed flawlessly on all of them. Gotchas: * The new library requires glib 2.12+ (compared to syslog-ng's 2.10), because of using some base64 functions introduced in that version. Though, that's only used in an example program, so with a little bit of hackery (disabling said program, and lowering the requirement) this can be worked around. -- |8]