|
|
71e593 |
From 929a2b84cbb63312c2d797ab7048003c6f5e0c71 Mon Sep 17 00:00:00 2001
|
|
|
71e593 |
From: =?UTF-8?q?Pavel=20B=C5=99ezina?= <pbrezina@redhat.com>
|
|
|
71e593 |
Date: Wed, 5 Sep 2018 15:08:52 +0200
|
|
|
71e593 |
Subject: [PATCH] sbus: register filter on new connection
|
|
|
71e593 |
|
|
|
71e593 |
The filter is not again registered on new connection when the old connection
|
|
|
71e593 |
was lost. This caused a segfault when the router is destroyed during shutdown.
|
|
|
71e593 |
|
|
|
71e593 |
It also would not allow to recieve and process any messages as the filter
|
|
|
71e593 |
function is needed for that. However, this was not very visible with
|
|
|
71e593 |
current sssd architecture.
|
|
|
71e593 |
|
|
|
71e593 |
Steps to reproduce:
|
|
|
71e593 |
1. Run SSSD
|
|
|
71e593 |
2. pkill sssd_be
|
|
|
71e593 |
3. Wait for responders to reconnect to backend
|
|
|
71e593 |
4. Shutdown SSSD
|
|
|
71e593 |
5. It will crash without this patch
|
|
|
71e593 |
|
|
|
71e593 |
Resolves:
|
|
|
71e593 |
https://pagure.io/SSSD/sssd/issue/3821
|
|
|
71e593 |
|
|
|
71e593 |
Reviewed-by: Jakub Hrozek <jhrozek@redhat.com>
|
|
|
71e593 |
(cherry picked from commit 55d5b43543b5ef62322fe635fe8108410cb4ea77)
|
|
|
71e593 |
---
|
|
|
71e593 |
src/sbus/router/sbus_router.c | 7 +++++++
|
|
|
71e593 |
1 file changed, 7 insertions(+)
|
|
|
71e593 |
|
|
|
71e593 |
diff --git a/src/sbus/router/sbus_router.c b/src/sbus/router/sbus_router.c
|
|
|
71e593 |
index 24c2c76475c130343eb4319a76dfa91f40d2958d..d31cef1b4c253b927b1b8e1c3d7daef14eb26dd6 100644
|
|
|
71e593 |
--- a/src/sbus/router/sbus_router.c
|
|
|
71e593 |
+++ b/src/sbus/router/sbus_router.c
|
|
|
71e593 |
@@ -364,6 +364,13 @@ errno_t
|
|
|
71e593 |
sbus_router_reset(struct sbus_connection *conn)
|
|
|
71e593 |
{
|
|
|
71e593 |
errno_t ret;
|
|
|
71e593 |
+ bool bret;
|
|
|
71e593 |
+
|
|
|
71e593 |
+ bret = sbus_router_filter_add(conn->router);
|
|
|
71e593 |
+ if (!bret) {
|
|
|
71e593 |
+ DEBUG(SSSDBG_CRIT_FAILURE, "Unable to register message filter!\n");
|
|
|
71e593 |
+ return EFAULT;
|
|
|
71e593 |
+ }
|
|
|
71e593 |
|
|
|
71e593 |
ret = sbus_router_reset_listeners(conn);
|
|
|
71e593 |
if (ret != EOK) {
|
|
|
71e593 |
--
|
|
|
71e593 |
2.14.4
|