Merge tag 'libmongo-client-0.1.7.1'

libmongo-client 0.1.7.1 release
src/libmongo-client.ver: Explicitly list LMC_0.1.0 symbols

Instead of tossing every otherwise untagged symbol under the LMC_0.1.0
version, use an explicit list.

Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
sync: connection recovery cache (with tests) added

libmongo-client dropped replicaset and auth. credentials when a
connection closed (disconnect() ). This can lead to a re-connect failure
problem (reload), if the master, at the moment of disconnect(), is not
listed in the application's config. So we have to store it (and also
authentication credentials...) .

This patch adds a recovery cache to each mongo_sync_connection object. A
recovery cache stores a ReplicaSet and an AuthCredentials object.

More techinally: there is a pointer inside mongo_sync_connection object
which references such a cache. If the cache is not set, everything is
just happen as before. When the cache is set, ReplicaSet and
AuthCredentials will be reused by the next mongo_sync_connection (eg.
after reload). When the seed list is changed, the user should discard
the cache.

Signed-off-by: Budai Laszlo <lbudai@balabit.hu>
tests: Include <glib.h> in libtap/tap.c

We're using g_vsnprintf(), so include glib to silence a warning.

Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
tests: Code cleanup

Removed some unused variables.

Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
tests: be careful when using a broken socket

Result of writing to a broken socket is platform specific.

There are platforms(POSIX.1-2008) which supports MSG_NOSIGNAL flag which
disabling SIGPIPE.

There are platforms which supports SO_NOSIGPIPE which is a socket option
(and can be set with setsockopt; FreeBSD) and which also disables SIGPIPE.

On other platforms(like Solaris, even Oracle Solaris 11) you will get a SIGPIPE
when you try to write to a broken socket. On those platforms we should ignore
SIGPIPE.

some techinal details:
  In configure.ac we check whether MSG_NOSIGNAL is supported or not on our
  plaform. If yes, HAVE_MSG_NOSIGNAL is defined.
  A new test_main_setup() function added to ignore SIGPIPE if
  HAVE_MSG_NOSIGNAL not defined. That function is called in the generated
  main().

Signed-off-by: Laszlo Budai <lbudai@balabit.hu>
Merge pull request #23 from lbudai/f/failover_refact

tests: be careful when using a broken socket
mongo-utils: Fix parsing addresses without a port name

When the address does not have a port, set the output port parameter to
-1. This fixes #24.

Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
mongo-sync: Only close the FD on reconnect if needed

When reconnecting and replacing the old FD with the new, only close the
old one if it is different from the new, otherwise we will end up
closing the new socket too. This fixes #25.

Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
mongo-utils: Allow -1 as port in mongo_util_parse_addr()

When using replica-sets with unix domain sockets, we end up putting
paths with -1 ports into the internal seed list. mongo_connect()
understands that, but mongo_util_parse_addr() needs to handle that
similarly too. To this end, allow -1 (MONGO_CONN_LOCAL) when parsing
addresses.

This really fixes #24.

Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
mongo-sync: Fix a memory leak

When _mongo_sync_packet_send() is called, all callers expect the passed
packet to get free()'d in all cases. This did not happen if we had
force_master set, and _mongo_cmd_ensure_conn() failed. This patch fixes
this path too, and fixes #26.

Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
mongo-sync: make it possible to use recovery cache from an external project

Recovery cache definition is an internal, private definition
(and we don't want to change it).

This patch:
- adds a constructor-like method (_new) instead of init,
  which creates the cache object dynamically by allocating memory on the heap

- adds a destructor-like method(_free) instead of discard

Signed-off-by: Budai Laszlo <lbudai@balabit.hu>
Merge pull request #27 from lbudai/f/failover_refact

mongo-sync: make it possible to use recovery cache from an external proj...
.travis.yml: Enable symbol versioning on Travis CI

Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
mongo-sync: save last error for future use

Signed-off-by: Budai Laszlo <lbudai@balabit.hu>
Merge branch 'f/last_error_refact'
tests: Fix a func test to work without a replica set

When working with a single MongoDB instance, properly skip newly added
tests in tests/func/mongo/sync/f_sync_auto_reconnect_cache.c.

Signed-off-by: Gergely Nagy <algernon@madhouse-project.org>
mongo-sync: store/load operations perform deep copy on the cache object

Signed-off-by: Budai Laszlo <lbudai@balabit.hu>
mongo-sync: recovery_cache_seed_add() supports unix domain sockets

Signed-off-by: Budai Laszlo <lbudai@balabit.hu>
Merge pull request #29 from lbudai/f/failover_refact

mongo-sync: store/load operations perform deep copy on the cache object