Consistent returns from ssnprintf/__ssnprintf wrappers, add ssnprintf2 for optional error handling.
libheap.la \
libignorelist.la \
liblatency.la \
+ libllist.la \
liblookup.la \
libmetadata.la \
libmount.la \
src/daemon/utils_cache.h \
src/daemon/utils_complain.c \
src/daemon/utils_complain.h \
- src/daemon/utils_llist.c \
- src/daemon/utils_llist.h \
src/daemon/utils_random.c \
src/daemon/utils_random.h \
src/daemon/utils_subst.c \
libavltree.la \
libcommon.la \
libheap.la \
+ libllist.la \
liboconfig.la \
-lm \
$(COMMON_LIBS) \
src/utils/ignorelist/ignorelist.c \
src/utils/ignorelist/ignorelist.h
+libllist_la_SOURCES = \
+ src/daemon/utils_llist.c \
+ src/daemon/utils_llist.h
+
libmetadata_la_SOURCES = \
src/utils/metadata/meta_data.c \
src/utils/metadata/meta_data.h
else
AC_MSG_RESULT([no])
with_libgrpcpp="no (requires C++11 support)"
+ with_libprotobuf="no (<google/protobuf/util/time_util.h> requires C++11 support)"
fi
fi
AC_CHECK_LIB([protobuf], [main],
[
SAVE_CPPFLAGS="$CPPFLAGS"
- CPPFLAGS="$with_libprotobuf_cppflags $PROTOBUF_CFLAGS"
+ CPPFLAGS="-std=c++11 $with_libprotobuf_cppflags $PROTOBUF_CFLAGS"
if test "x$PROTOBUF_LIBS" = "x"
then
PROTOBUF_LIBS="-lprotobuf"
with_libtokyotyrant="$withval"
else
with_libtokyotyrant_cppflags="-I$withval/include"
- with_libtokyotyrant_ldflags="-L$withval/include"
+ with_libtokyotyrant_ldflags="-L$withval/lib"
with_libtokyotyrant_libs="-ltokyotyrant"
with_libtokyotyrant="yes"
fi
else if test "x$withval" = "xyes"; then
with_libupsclient="use_pkgconfig"
else
- if test -x "$withval"; then
+ if test -f "$withval" && test -x "$withval"; then
with_libupsclient_config="$withval"
with_libupsclient="use_libupsclient_config"
else if test -x "$withval/bin/libupsclient-config"; then
INFO("exec plugin: Sent SIGTERM to %hu", (unsigned short int)pl->pid);
}
+ for (int i = 0; pl->argv[i] != NULL; i++) {
+ sfree(pl->argv[i]);
+ }
+ sfree(pl->argv);
+ sfree(pl->exec);
sfree(pl->user);
sfree(pl);
} data;
struct sockent *next;
+ pthread_mutex_t lock;
} sockent_t;
/* 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3
sfree(se->node);
sfree(se->service);
+ pthread_mutex_destroy(&se->lock);
if (se->type == SOCKENT_TYPE_CLIENT)
free_sockent_client(&se->data.client);
se->service = NULL;
se->interface = 0;
se->next = NULL;
+ pthread_mutex_init(&se->lock, NULL);
if (type == SOCKENT_TYPE_SERVER) {
se->data.server.fd = NULL;
client->fd = -1;
}
+ DEBUG("network plugin: free (se = %p, addr = %p);", (void *)se,
+ (void *)client->addr);
sfree(client->addr);
client->addrlen = 0;
client->fd = -1;
continue;
}
+ DEBUG("network plugin: alloc (se = %p, addr = %p);", (void *)se,
+ (void *)client->addr);
assert(sizeof(*client->addr) >= ai_ptr->ai_addrlen);
memcpy(client->addr, ai_ptr->ai_addr, ai_ptr->ai_addrlen);
buffer_len);
for (sockent_t *se = sending_sockets; se != NULL; se = se->next) {
+ pthread_mutex_lock(&se->lock);
#if HAVE_GCRYPT_H
if (se->data.client.security_level == SECURITY_LEVEL_ENCRYPT)
network_send_buffer_encrypted(se, buffer, buffer_len);
else /* if (se->data.client.security_level == SECURITY_LEVEL_NONE) */
#endif /* HAVE_GCRYPT_H */
network_send_buffer_plain(se, buffer, buffer_len);
+ pthread_mutex_unlock(&se->lock);
} /* for (sending_sockets) */
} /* }}} void network_send_buffer */