diff --git a/connretry-recv.patch b/connretry-recv.patch new file mode 100644 index 0000000000000000000000000000000000000000..5871d3834e798967ae83302bcaca9ace65bbcee5 --- /dev/null +++ b/connretry-recv.patch @@ -0,0 +1,46 @@ +commit 5594d377ac73d37c06bbad1798e87a65f9a12e07 +Author: Chrissie Caulfield +Date: Fri Nov 25 07:38:20 2022 +0000 + + ipc: Retry receiving credentials if the the message is short (#476) + + ipc: Retry receiving credentials if the the message is short + + rhbz#2111711 refers + +diff --git a/lib/ipc_setup.c b/lib/ipc_setup.c +index 0ef9bb6..0de7115 100644 +--- a/lib/ipc_setup.c ++++ b/lib/ipc_setup.c +@@ -473,11 +473,15 @@ qb_ipcc_us_setup_connect(struct qb_ipcc_connection *c, + return 0; + } + ++#define AUTH_RECV_MAX_RETRIES 10 ++#define AUTH_RECV_SLEEP_TIME_US 100 ++ + /* Called from ipcc_connect_continue() when async connect socket is active */ + int qb_ipcc_setup_connect_continue(struct qb_ipcc_connection *c, struct qb_ipc_connection_response *r) + { + struct ipc_auth_data *data; + int32_t res; ++ int retry_count = 0; + #ifdef QB_LINUX + int off = 0; + #endif +@@ -486,8 +490,14 @@ int qb_ipcc_setup_connect_continue(struct qb_ipcc_connection *c, struct qb_ipc_c + qb_ipcc_us_sock_close(c->setup.u.us.sock); + return -ENOMEM; + } +- ++retry: + res = qb_ipc_us_recv_msghdr(data); ++ if (res == -EAGAIN && ++retry_count < AUTH_RECV_MAX_RETRIES) { ++ struct timespec ts = {0, AUTH_RECV_SLEEP_TIME_US*QB_TIME_NS_IN_USEC}; ++ struct timespec ts_left = {0, 0}; ++ nanosleep(&ts, &ts_left); ++ goto retry; ++ } + + #ifdef QB_LINUX + setsockopt(c->setup.u.us.sock, SOL_SOCKET, SO_PASSCRED, &off, diff --git a/libqb-2.0.0.tar.xz b/libqb-2.0.0.tar.xz deleted file mode 100644 index b2d72e6eaa02357eb50be39a4c931e026d94f82d..0000000000000000000000000000000000000000 Binary files a/libqb-2.0.0.tar.xz and /dev/null differ diff --git a/libqb-2.0.6.tar.xz b/libqb-2.0.6.tar.xz new file mode 100644 index 0000000000000000000000000000000000000000..9c7406acfb2ed96d3118a8b0e1979e934ae32a0c Binary files /dev/null and b/libqb-2.0.6.tar.xz differ diff --git a/libqb.spec b/libqb.spec index cc08e6916c5360517a26478dc7491aeff9fbfe40..dae278712957b7227b8aacb70a1f07b49d038981 100644 --- a/libqb.spec +++ b/libqb.spec @@ -1,21 +1,25 @@ Name: libqb -Version: 2.0.0 +Version: 2.0.6 Release: 1 Summary: Library providing high performance logging, tracing, ipc, and poll License: LGPLv2+ URL: https://github.com/ClusterLabs/libqb Source0: https://github.com/ClusterLabs/libqb/releases/download/v%{version}/%{name}-%{version}.tar.xz + +Patch0: connretry-recv.patch + BuildRequires: autoconf automake libtool check-devel doxygen gcc procps pkgconfig(glib-2.0) BuildRequires: git-core # For doxygen2man -BuildRequires: libxml2-devel +BuildRequires: libxml2-devel make %description libqb provides high-performance, reusable features for client-server architecture, such as logging, tracing, inter-process communication (IPC), and polling. %prep -%autosetup -p1 -S git_am +%setup -q -n %{name}-%{version} +%patch0 -p1 -b .connretry-recv.patch %build ./autogen.sh @@ -73,6 +77,9 @@ This package contains a program to create nicely-formatted man pages from Doxyge %{_mandir}/man1/doxygen2man.1.gz %changelog +* Mon Feb 27 2023 li-long315 - 2.0.6-1 +- Upgrade to 2.0.6 + * Fri Apr 08 2022 jiangxinyu - 2.0.0-1 - Upgrade to 2.0.0