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