Go to file
Jeremy Fitzhardinge 6d75ccba6f ipc_us: on Linux, set SO_PASSCRED on the sending socket too
Linux doesn't pass credential information by default, only when it has
been specifically requested with SO_PASSCRED.  This means there's a
race between when the ipc server side has set up and is listening on the
socket, and when the client may connect; if the client connects and sends
its first message before the server has set SO_PASSCRED on the socket,
then there will be no ucred information associated with the message.

The fix is to set SO_PASSCRED on the client socket as well, so that
the message will always have a ucred associated with it when the server
reads it.

Without this change, around 1% of cpg_model_initialize() calls fail
with CS_ERR_ACCESS.

(This Linux behaviour was introduced just on a year ago in
16e5726269611b71c930054ffe9b858c1cea88eb "af_unix: dont send
SCM_CREDENTIALS by default".)
2012-09-05 17:51:49 -07:00
build-aux Cleanup the .gitignore files 2012-05-09 21:43:58 +10:00
docs Upgrade the doxygen config. 2012-07-14 22:30:24 +10:00
examples openbsd requires netinet/in.h before arpa/inet.h 2012-08-29 22:40:38 +10:00
include Remove IPC_NEEDS_RESPONSE_ACK and turn off shm ipc on solaris 2012-08-31 14:53:38 +10:00
lib ipc_us: on Linux, set SO_PASSCRED on the sending socket too 2012-09-05 17:51:49 -07:00
tests TEST: Include writing and reading the blackbox in the log_long_msg test 2012-09-05 19:34:56 +10:00
tools build: fix libqb.pc creation and make maintainer-clean 2012-08-27 15:07:36 +02:00
.gitignore Cleanup the .gitignore files 2012-05-09 21:43:58 +10:00
.travis.yml Add the mailing list to the travis email notifications. 2012-08-22 11:11:19 +10:00
autogen.sh libtool and code re-structure 2010-04-15 23:25:29 +10:00
check Remove IPC_NEEDS_RESPONSE_ACK and turn off shm ipc on solaris 2012-08-31 14:53:38 +10:00
coding_style.txt Add the coding style definition file. 2010-07-06 12:45:46 +10:00
configure.ac Remove IPC_NEEDS_RESPONSE_ACK and turn off shm ipc on solaris 2012-08-31 14:53:38 +10:00
COPYING Re-license to LGPL 2.1 2010-05-25 06:11:59 +10:00
INSTALL Initial Commit. 2010-03-11 14:19:39 +11:00
libqb.spec.in Fix removal of automatically installed doc files when building rpms 2012-08-23 10:22:18 +10:00
Lindent Change Lindent options to break the procedure type. 2011-06-22 14:19:14 +10:00
Makefile.am Add a tool to dump the blackbox. 2012-05-28 11:16:00 +10:00
README.markdown Add some more content to the README 2011-07-13 11:34:03 +10:00

libqb

What is libqb?

libqb is a library with the primary purpose of providing high performance client server reusable features. It provides high performance logging, tracing, ipc, and poll.

We don't intend be an all encompassing library, but instead provide very specially focused APIs that are highly tuned for maximum performance for client/server applications.

For more information look at:

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/asalkeld/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.

  • Test and report issues.
  • Help others on the mailing list.
  • Contribute documentation, examples and test cases.
  • Contribute patches.
  • Spread the word.