Go to file
Jan Pokorný 41ae3e1267 Memleak fixes (#194)
* memleak: ipc_socket: properly dispose local-scoped strndup values

Leaking memory was only possible when using filesystem sockets (see
use_filesystem_sockets function) and either:
- client is deliberately disconnecting from a server (continued run
  imposes a risk of exhausting memory)
- server is deliberately disconnecting from its client (ditto, but
  more substantial risk due to the common shared-resource nature
  of the server)

Signed-off-by: Jan Pokorný <jpokorny@redhat.com>

* memleak: ipc_socket: properly dispose inter-function strdup values

Leaking memory was only possible when the server accepted the client,
but didn't get (or was too shy) to talk to it prior to proceeding with
a disconnect.

Signed-off-by: Jan Pokorný <jpokorny@redhat.com>

* ipc_socket: care to explain what's going on with file name inference

Related to the code parts at hand, there was an investigation/fix in
the past, initiated by "make check" failure on FreeBSD 9 [rhbz#1256701].
Unfortunately, not only the magic constant being modified was not
explained in 1908e6c, but (one can derive because of a lack of solid
background of what's going on here, which might have caused that),
it was modified incorrectly at one instance (see also [PR165 comment]),
which was then reinstated in 7ebcb3d.

So, finally de-mystify those magic constants.  Also break the symmetry
between the client/server further with depending on the canonical
"request socket" alias at the server side (the former worked equally but
it was unnecessarily confusing and there's a risk this artificial alias
will get removed in the future).

[rhbz#1256701] https://bugzilla.redhat.com/1256701
[PR165 comment] https://github.com/ClusterLabs/libqb/issues/165#issuecomment-142949541

Signed-off-by: Jan Pokorný <jpokorny@redhat.com>
2017-05-18 11:29:15 +01:00
.tito build: tito: unify custom.py with pacemaker's version 2016-12-16 15:48:25 +01:00
build-aux build: use latest git-version-gen from gnulib (rev. 6118065) 2016-04-04 15:32:01 +02:00
docs doc: Clarify IPC caution text 2017-05-02 10:29:44 +01:00
examples configure: restrict nsl lib to where it's actually needed 2016-12-12 11:47:21 +01:00
include Fix typos: synchonization -> synchronization, paramaters -> parameters 2016-12-08 14:10:55 +01:00
lib Memleak fixes (#194) 2017-05-18 11:29:15 +01:00
m4 configure: restrict pthreads to where it's actually needed 2016-12-12 11:46:13 +01:00
tests Allow Linux to use filesystem sockets (#248) 2017-04-28 16:13:02 +01:00
tools build: fix libqb.pc creation and make maintainer-clean 2012-08-27 15:07:36 +02:00
.gitignore Low: build: update .gitignore for vim swap files and "make check" output 2015-04-27 14:49:21 -04:00
.tito.spec.tmpl build: allow for git -> automatic COPR builds integration 2016-11-18 23:32:44 +01:00
.travis.yml CI: travis: fix du -> df and capture it also directly from test 2016-12-16 15:48:10 +01:00
autogen.sh libtool and code re-structure 2010-04-15 23:25:29 +10:00
check minor fixes to check script's ABI report 2015-08-28 11:20:20 -05:00
coding_style.txt Add the coding style definition file. 2010-07-06 12:45:46 +10:00
configure.ac Allow Linux to use filesystem sockets (#248) 2017-04-28 16:13:02 +01:00
COPYING Re-license to LGPL 2.1 2010-05-25 06:11:59 +10:00
INSTALL The license is in COPYING, not LICENSE 2015-12-16 19:28:20 +01:00
libqb.spec.in build: drop allegedly no longer intrusive syslog-tests opt-in switch 2016-12-12 12:18:37 +01:00
Lindent Change Lindent options to break the procedure type. 2011-06-22 14:19:14 +10:00
Makefile.am build: persuade git-version-gen vMAJOR.MINOR tags just miss .0 2016-04-04 16:08:18 +02:00
README.markdown doc: README: add a status badge+link for the COPR builds 2016-11-22 16:36:26 +01:00

libqb

What is libqb?

libqb is a library with the primary purpose of providing high-performance, reusable features for client-server architecture, such as logging, tracing, inter-process communication (IPC), and polling.

libqb is not intended to be an all-encompassing library, but instead provide focused APIs that are highly tuned for maximum performance for client-server applications.

Build Status COPR Build Status

For more information, see:

Dependencies

  • glib-2.0-devel (If you want to build the glib example code)
  • check-devel (If you want to run the tests)
  • doxygen and graphviz (If you want to build the doxygen man pages or html manual)

Source Control (GIT)

git clone git://github.com/ClusterLabs/libqb.git

See Github

Installing from source

$ ./autogen.sh
$ ./configure
$ make
$ sudo make install

How you can help

If you find this project useful, you may want to consider supporting its future development. There are a number of ways to support the project.