Name: libqb Version: 1.0.1 Release: 6%{?dist} Summary: An IPC library for high performance servers Group: System Environment/Libraries License: LGPLv2+ URL: http://clusterlabs.github.io/libqb/ Source0: https://github.com/ClusterLabs/%{name}/releases/download/v%{version}/%{name}-%{version}.tar.xz Patch1: bz1422454-ipc-detect-corrupt-shm-in-peek.patch Patch2: bz1446254-ipc-allow-fs-sockets.patch Patch3: bz1459276-dont-truncate-in-client.patch Patch4: bz1422573_1-dont-override-user-signals.patch Patch5: bz1422573_2-dont-override-user-signals.patch BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildRequires: libtool doxygen procps check-devel automake autoconf #Requires: %description libqb provides high performance client server reusable features. Initially these are IPC and poll. %prep %setup -q %patch1 -p1 -b .bz1422454-ipc-detect-corrupt-shm-in-peek %patch2 -p1 -b .bz1446254-ipc-allow-fs-sockets %patch3 -p1 -b .bz1459276-dont-truncate-in-client.patch %patch4 -p1 -b .bz1422573_1-dont-override-user-signals.patch %patch5 -p1 -b .bz1422573_2-dont-override-user-signals.patch # work-around for broken epoll in rawhide/f17 %build ./autogen.sh %configure --disable-static make %{?_smp_mflags} %check make check %install rm -rf $RPM_BUILD_ROOT make install DESTDIR=$RPM_BUILD_ROOT find $RPM_BUILD_ROOT -name '*.la' -exec rm -f {} ';' rm -rf $RPM_BUILD_ROOT/%{_docdir}/* %clean rm -rf $RPM_BUILD_ROOT %post -p /sbin/ldconfig %postun -p /sbin/ldconfig %files %defattr(-,root,root,-) %doc COPYING %{_sbindir}/qb-blackbox %{_libdir}/libqb.so.* %package devel Summary: Development files for %{name} Group: Development/Libraries Requires: %{name} = %{version}-%{release} pkgconfig %description devel The %{name}-devel package contains libraries and header files for developing applications that use %{name}. %files devel %defattr(-,root,root,-) %doc COPYING README.markdown %{_includedir}/qb/ %{_libdir}/libqb.so %{_libdir}/pkgconfig/libqb.pc %{_mandir}/man3/qb*3* %{_mandir}/man8/qb-blackbox.8.gz %changelog * Fri Nov 03 2017 Christine Caulfield - 1.0.1-6 Don't override external signal handlers Resolves: rhbz#1422573 * Tue Jun 27 2017 Christine Caulfield - 1.0.1-5 Put backpatch 189ca28 as it's not the culprit Don't truncate IPC files in the client as it can cause servers to crash. I've also had to (for this release) disable one of the tests as it checks for truncated files. Resolves: rhbz#1459276 * Wed Jun 20 2017 Christine Caulfield - 1.0.1-4 Revert git patch 189ca28 which caused problems with pacemaker CIB closing down. Resolves: rhbz#1459276 * Mon May 15 2017 Christine Caulfield - 1.0.1-3 Allow IPC system to use filesystem sockets instead of abstract sockets if a configuration file exists. Resolves: rhbz#1446254 * Tue Jan 31 2017 Christine Caulfield - 1.0.1-2 Detect IPC Shared memory corruption in peek as well as read. Prevents the mainloop from spinning if multithreaded IPC (which is currently not supported) is attempted without locking. Resolves: rhbz#1422454 * Tue Jan 31 2017 Christine Caulfield - 1.0.1-1 * Rebase to 1.0.1 Resolves: rhbz#1392835 * Tue Dec 06 2016 Christine Caulfield - 1.0-2 * Don't overwrite valid logging tags, breaks facility names on PPC64LE Resolves: rhbz#1387165 * Thu Apr 21 2016 Christine Caulfield - 1.0-1 Rebase to 1.0 Resolves bz#1299968 * Mon Nov 2 2015 Christine Caulfield - 0.17.1-2.1 Increase size of the buffer where we make the socket name to allow for longer PIDs Resolves bz#1114852 * Thu Apr 16 2015 David Vossel - 0.17.1-2 Fixes assert encountered in libqb's mainloop implementation. Resolves: rhbz#1211375 * Thu Mar 05 2015 David Vossel - 0.17.1-1.1 Fix bug that prevents ipc server from working in pid with realtime priority. Resolves: rhbz#1198718 * Tue Aug 26 2014 David Vossel - 0.17.1-1 Fix: ipcs: Correctly allocate receive buffer size Fix: ipc_socket: Signalhandler must be resetted to Default, use only cleanup_sigpipe to return from qb_ipc_dgram_sock_setup. Fix: trie: allow modifying the trie map during the notify callback Fix: fix invalid option when run 'ipcclient -h' Fix: epoll: don't miss poll events under high load Fix: ipc_shm: fix error handling in qb_ipcs_shm_connect() Fix: ringbuffer: fix size in qb_rb_create_from_file() Fix: ringbuffer: fix qb_rb_open_2() debug format string Fix: trie: fixes regression caused by ref count refactoring Fix: ipcc: Properly timeout during recv when timeout value is provided Resolves: rhbz#1110043 Resolves: rhbz#975903 * Mon Feb 10 2014 David Vossel - 0.16.0-6 - Fixes use after free in ipc server Resolves: rhbz#1063415 * Fri Jan 24 2014 Daniel Mach - 0.16.0-5 - Mass rebuild 2014-01-24 * Mon Jan 20 2014 David Vossel - 0.16.0-4 - Require log filtering to match function and file exactly. No substring matching. - Fixes complile time issue with 'make check' unit tests. Resolves: rhbz#1018091 * Fri Dec 27 2013 Daniel Mach - 0.16.0-3 - Mass rebuild 2013-12-27 * Thu Oct 30 2013 David Vossel - 0.16.0-2 Set SO_PASSCRED on listener socket Resolves: rhbz#1021597 * Thu Jul 25 2013 David Vossel - 0.16.0-1 Rebase to v0.16.0 release * Thu Jul 24 2013 David Vossel - 0.15.0-2 sync spec file with v0.15.0 release * Thu Jul 24 2013 David Vossel - 0.15.0-1 Rebase to release v0.15.0 * Thu Feb 14 2013 Fedora Release Engineering - 0.14.4-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild * Thu Jan 17 2013 Angus Salkeld - 0.14.4-1 LOG: prevent the last char of the blackbox message from getting lost. Example: make the blackbox example more practical. Add the processing which remove notifier at skiplist_destroy function Add the processing which remove hash node and notifier at hashtable_destroy function Unify to QB_TRUE/QB_FALSE a boolean value Document the default prefix in INSTALL Unify the list processing with qb_list function Add travis link to the readme. Fix return code which is an error occurred at pthread function TEST: add a progam to compare the speed of vsnprintf and qb_vsnprintf_serialize LOG: add a test for a padded hex int. Fedora's splint has a strange syntax error, don't fail on it. LOG: fix truncation in some messages that get padded. Fix the blackbox formatter when specifing the string len/precision Fix strlcpy and strlcat functions IPC: don't over log on disconnect Make sure we don't use the format string whilst it is getting changed. ptrie: deref the current node in trie_iter_free() LOG: fix the format comparison to avoid generating multiple entries. LOG: set the return code when calloc fails IPC: call poll if we are mid message and get EAGAIN Remove extra ";" IPC: set the error more correctly when qb_sys_mmap_file_open() fails. Make sure that mmap'ed files smaller than a page size are written to. example/test: check for error in qb_ipc_run() example: check for error in qb_ipc_run() TEST: fix typo s/,/; in check_ipc.c * Mon Oct 29 2012 Angus Salkeld - 0.14.3-2 Fix test code highlighted by new check version Remove the call to autogen.sh - not needed anymore. * Mon Oct 29 2012 Angus Salkeld - 0.14.3-1 IPC: Pass the timeout to poll() if the recv function returns EAGAIN LOG: make the format comparison safe and sane LOG: don't break on empty callsites, just ignore them LOG: use the array callback to register new callsites array: add a mechanism to get a callback when a bin is allocated Solaris based operating systems don't define MSG_NOSIGNAL and SO_NOSIGPIPE. Make sure atomic's are initialized (for non-gcc atomic). * Wed Sep 12 2012 Angus Salkeld - 0.14.2-2 Fix a crash in ptrie if you iterate over the map in the deleted notifier. * Mon Sep 10 2012 Angus Salkeld - 0.14.2-1 Get libqb building on cygwin. ipc_us: slightly more robust cmsg handling ipc_us: on Linux, set SO_PASSCRED on the sending socket too ipc_us: clear request unused fields TEST: Include writing and reading the blackbox in the log_long_msg test LOG: fix qb_vsnprintf_deserialize() blackbox: fix 64-bit big-endian issues Remove IPC_NEEDS_RESPONSE_ACK and turn off shm ipc on solaris Define unix path max for openbsd Only turn on ipc_needs_response_ack=yes for solaris Some improvements to kqueue usage. kqueue: drop log message to trace. Fix splint warning openbsd requires netinet/in.h before arpa/inet.h Avoid strcpy() use strlcpy() instead. Fix kqueue complile warnings openbsd doesn't have EBADMSG openbsd has a different UNIX_PATH_MAX LOG: change qb_vsprintf_serialize() into qb_vsnprintf_serialize() TEST: increase timeout to 6 secs as the recv timeout is 5 secs TEST: get the logic right - grrr. Turn off attribute_section on netbsd Some missing pshared semaphore checks Cleanup the checks for pshared semaphores Add a config check for pthread_mutexattr_setpshared Remove uses of timersub and use qb_util_stopwatch RB: change the #error to ENOTSUP if no usable shared process sem LOOP-KQUEUE: fix reference before assignment. build: fix libqb.pc creation and make maintainer-clean LOG: Make sure the semaphores are initialized. build: remove bashism in cc support check Catch disconnected sockets on Solaris Don't free rb->shared_hdr in qb_rb_create_from_file() Check error return of qb_ipcs_uc_recv_and_auth() Fix removal of automatically installed doc files when building rpms Add the mailing list to the travis email notifications. Work around debian not setting the arch path in splint. Remove color-tests and parallel-tests automake options. Add travis continuous integration config LOG: Invoke custom log filter function if tag changes tests/rbwriter: don't ignore write failure ipcs: avoid use-after-free for size-0 || disconnect-request * Wed Jul 18 2012 Angus Salkeld - 0.14.1-1 RB: set the new read pointer after clearing the header (#839605). RB: improve the debug print outs RB: be more explicit about the word alignment RB: cleanup the macros for wrapping the index RB: use sem_getvalue as a tie breaker when read_pt == write_pt RB: if read or peek don't get the message then re-post to the semaphore RB: convert the rb_peek() status into a recv like status. RB: use internal reclaim function IPC: use calloc instead of malloc to fix valgrind warnings Upgrade the doxygen config. Fix a valgrind error. * Sun Jun 24 2012 Angus Salkeld - 0.14.0-1 LOG: fix threaded logging. Add user control of the permissions that are set on the shared mem files LOG: Restrict string trucation during serialization to when a precision is specified LOG: Gracefully fail when the caller exceeds QB_LOG_MAX_LEN LOG: Observe field widths when serializing string arguments RB: use the same mechanism in reclaim as read/peek to detect end-of-ring Add needs_response_ack option to ./check RB: fix wrong sem_flg IPC_NOWAIT option TESTS: fix warning about unused functions Remove D_FORTIFY_SOURCE from check. Open shared mem file in /dev/shm only for linux Don't use msg_flags on solaris (recvmsg). Turn off attribute_section on solaris ipc example: add -e (events) option IPC: if the server returns EAGAIN or ETIMEOUT the check the connection LOG: make it possible to fsync() on each file log. IPC: make sure that the created callback happens before dispatches LOG: fix the printing of %p in the blackbox IPC: On bsd's use the notifier for responses IPC: interpret ECONNRESET and EPIPE as ENOTCONN cleanup some warnings config: use newer AC_COMPILE_IFELSE() blackbox: fix %p formatting LOG: put all fields in the blackbox (added priority and tags) example: make the priority uint8_t Remove strerror out of check_funcs RB: fix compiler warning. Add replacement function stpcpy Add missing AC_TYPE_UINT16_T to configure.ac Use AC_FUNC_STRERROR_R and STRERROR_R_CHAR_P Add stpcpy strcasecmp to the check_funcs Move some conditional defines into code (from the configure script) Remove some unused configure checks Remove message queues Check for union semun properly Blackbox: provide more space for log messages when reading from the blackbox. Add the blackbox reader manpage to the spec file Enable error logging for the blackbox reader RB: Read the file size into an initialized variable of the correct size Add a tool to dump the blackbox. RB: to be safer save the read and write pointers at the top of the blackbox avoid unwarranted use of strncpy: use memcpy instead blackbox: fix the print_from_file() RB: add an option to not use any semaphores LOG: tweak the blackbox format string LOG: accept NULL strings into the blackbox LOG: protect close and reload from calling log Add benchmark option (-b) to examples/ipcclient TEST: make rbreader/writer more like the other benchmarking apps IPC: log the connection description in all logs TEST: re-organise the ipc test suites IPC: only modify the dispatch if we get EAGAIN Correctly display timestamp in blackbox * Thu May 10 2012 Angus Salkeld - 0.13.0-1 - Remove unneccessary __attribute__ ((aligned(8))) from internal headers - IPC: add a new function to get (and alloc) the extended stats. - Revert "Add the event queue length to the connection stats." - IPC: cleanup better on a failed client connect. - IPC(soc): be more consistent with control struct size - IPC: kill a compiler warning - IPC(soc): pass in the correct size into munmap() - TEST: Use /bin/sh not /bin/bash - TEST: check for lost shared mem on bsd too - rb: cleanup the semaphores - Fix some small issues in ./check - Cleanup the .gitignore files - configure.ac tweaks - Remove HZ and use sysconf instead. - SUN_LEN() macro is present if __EXTENSIONS__ is defined on Illumos - PF_UNIX is a POSIX standard name - Test for log facility names - IPC: drop log message to debug. - IPC: fix retrying of partial recv's and sends. - IPC: initialize enough shared mem for all 3 one way connections. - IPC: keep retrying to recv the socket message if partially recv'ed (part 2) - IPC: keep retrying to recv the socket message if partially recv'ed - IPC: handle the server shutdown better - IPC: handle a connection disconnect from the server better - IPC: make it possible to send events in the connected callback. - Add the event queue length to the connection stats. - IPC: add a is_connected client side function. - Fix typo in ./check - docs: clarify the need to use request/response headers - Remove unused local variable - IPC: change the socket recv function to read the response header. - Add some special commands into the ipc example - TEST: improve the tracing in the ipc tests. - Make "make (s)rpm" work more reliably - TEST: add a test to confirm we get the events we send. - TEST: reuse send_and_check for events. - IPC: make it possible for a root client to talk to a non-root server. - Run ./Lindent in the examples directory - Add some debug code to the ipcclient example - IPC: make sure ipc (socket) clients can connect to a server running as root. - IPC: allow qb to bump the max_message_size - IPC: check for a sane minimum max_message_size - add rpl_sem.h loop_poll_int.h to noinst_headers - Handle errors more consistently - call recv_ready on socket types - Handle a recv of size 0 - make bsd shm path better by default. - Fix kqueue on freebsd. - Get the example socket includes right. - Fix kqueue compiling. - POLL: seperate out the poll/epoll and add kqueue - Test existence of getpeer* functions - Add inet header to tcpclient example - Don't link with setpshared if unavailable - NetBSD doesn't have semun defined - Use MADV_NOSYNC only on systems where available - Use SCHED_BATCH only on platforms where available - Fix a bug introduced by the bsd patch. - Cleanup the selection of semaphores to use - Fix some leaks in the logging. - Try and improve the portability on bsd variants. * Sun Mar 11 2012 Angus Salkeld - 0.11.1-1 - configue libqb to not use epoll as it seems broken (#800865) - LOOP: remove some old timerfd code. - TEST: add a test to check the order of the jobs - LOOP: when new jobs are added they are added to the head instead of the tail. - LOG: Now the array is self locking we can make the lookup array dynamic - Add locking to the array when growing. - IPC: make the _request_q_len_get() function more obvious. - IPC: fix multiple receives from qb_ipc_us_recv() - IPC: make sure that the wrong union member is not written to. - TIMER: check for null timer handle Wed Mar 7 2012 Angus Salkeld - 0.11.0-1 - ARRAY: cleanup the pointer sizeof() - LOG: turn off __attribute__(section) for powerpc (not working) - TESTS: move the util tests into "slow-tests" (i.e. optional) - TEST: make the test_priority the same type as in the callsite - LOG: make the log arrays manually grow-able since we need to lock the calls. - RB: fix test failure on ppc - RB: change the name of the size to word_size to be more clear - TEST: add some more signal tests. - LOOP: fix deletion of signal handlers when they are pending - LOOP: signal handlers were always added as high priority. - TEST: deal with mac's limited sed - check: add debugging to the configure options and remove unused options - TEST: properly clear the filters - LOG: expose the mechanism to get a dynamic callsite. - Revert part of my COARSE grained timer commit - Remove timerfd usage and go back to timelist. - UTIL: if possible use COARSE resolution clocks - they are much faster. - ARRAY: save memory (in the bins array) and allow holes in the array - LOOP: add qb_loop_timer_is_running() - LOOP: allow stop() and run() to be called with NULL loop instance. - LOOP: fix doxygen parameter comment - LOG: add stdout target - LOOP: add a function to delete jobs - LOG: remove debug printf's - LOG: remove an old/incorrect doxygen comment. - LOG: add a hostname %H format specifier. - LOG: Add qb_log_filter_fn_set() * Tue Feb 14 2012 Angus Salkeld - 0.10.1-1 - Fix "make distcheck" add include path to AM_CPPFLAGS - Bump the version to 0.10.1 - clang: Remove unused code - TEST: make the ipc failure test closer to corosync's case. - RB: add a debug message if trying to read a message of the wrong size - IPC: split up the recv into chuncks of 2 seconds. (#788742) - Be more consistent with the internal logs. - LOOP: make it possible to pass in NULL as the default loop instance - RB: use the proper struct not the typedef in the implementation. - RB: Fix potential mem leak - Don't mix enums (QB_TRUE/TRUE) - use random() not rand() - Remove dead code - set umask before calling mkstemp() - Use safer versions of string functions (strcpy -> strlcpy) - Increase the coverity aggressiveness - TEST: make the loop ratelimit test more forgiving. * Tue Feb 07 2012 Angus Salkeld - 0.10.0-1 - LOOP: handle errors from the poll function - LOOP: make the item type applicable to jobs too. - LOOP: fix the todo calculations. - TEST: check for a single job causing a cpu spin - LOOP: prevent jobs from consuming too much cpu. - Get coverity to ignore this warning. - Change example code to use fgets instead of gets - LOG: pass the result of qb_log_thread_start() back to the user - Fix some issues found by clang - Add clang-analyzer check - Add a split timer to the stopwatch. - IPC: merge common code into new function - IPC: better handle a disconnect been called from within connection_created() - IPC: fix scary typo - IPC: fix server error handling * Mon Feb 06 2012 Angus Salkeld - 0.9.0-2 - Fix a spin in the mainloop when a timer or poll gets removed When in the job queue (#787196). * Fri Jan 27 2012 Angus Salkeld - 0.9.0-1 - Rebased to 0.9.0 * Tue Jan 10 2012 Angus Salkeld - 0.8.1-2 - fix qb_timespec_add_ms() * Thu Jan 5 2012 Angus Salkeld - 0.8.1-1 - Rebased to 0.8.1 (#771914) * Wed Nov 17 2011 Angus Salkeld - 0.7.0-1 - Rebased to 0.7.0 (#754610) * Thu Sep 1 2011 Angus Salkeld - 0.6.0-2 - LOG: fix the default syslog filter * Tue Aug 30 2011 Angus Salkeld - 0.6.0-1 - Rebased to 0.6.0 which includes (#734457): - Add a stop watch - LOG: serialize the va_list, don't snprintf - LOG: change active list into array access - atomic: fix qb_atomic_pointer macros - LOG: allow the thread priority to be set. - Fix splint warning on ubuntu 11.04 * Mon Jul 18 2011 Angus Salkeld - 0.5.1-1 - Rebased to 0.5.1 which includes: - LOOP: make the return more consistent in qb_loop_timer_expire_time_get() - LOG: add string.h to qblog.h - Add a qb_strerror_r wrapper. - don't let an invalid time stamp provoke a NULL dereference - LOG: move priority check up to prevent unnecessary format. - rename README to README.markdown * Wed Jun 8 2011 Angus Salkeld - 0.5.0-1 - Rebased to 0.5.0 which includes: - new logging API - support for sparc - coverity fixes * Tue Feb 8 2011 Angus Salkeld - 0.4.1-2 - SPEC: improve devel files section - SPEC: remove global variables * Mon Jan 31 2011 Angus Salkeld - 0.4.1-1 - SPEC: add procps to BuildRequire - SPEC: remove automake and autoconf from BuildRequire - SPEC: remove call to ./autogen.sh - SPEC: update to new upstream version 0.4.1 - LOOP: check read() return value - DOCS: add missing @param on new timeout argument - BUILD: only set -g and -O options if explicitly requested. - BUILD: Remove unneccessary check for library "dl" - BUILD: improve the release build system * Fri Jan 14 2011 Angus Salkeld - 0.4.0-2 - remove "." from Summary - Add "check-devel to BuildRequires - Add "make check" to check section - Changed a buildroot to RPM_BUILD_ROOT - Document alphatag, numcomm and dirty variables. * Sun Jan 09 2011 Angus Salkeld - 0.4.0-1 - Initial release