From fc7043d6fe2cfa55c651f1efe962e4f83e79756a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fabiano=20Fid=C3=AAncio?= <fidencio@redhat.com>
Date: Thu, 12 Oct 2017 10:08:21 +0200
Subject: [PATCH 1/2] DP: Fix the output type used in dp_req_recv_ptr()
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Related: https://pagure.io/SSSD/sssd/issue/3307

Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com>
---
 src/providers/data_provider_be.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/src/providers/data_provider_be.c b/src/providers/data_provider_be.c
index a1509cfd2..e564bc11d 100644
--- a/src/providers/data_provider_be.c
+++ b/src/providers/data_provider_be.c
@@ -249,7 +249,7 @@ static errno_t be_check_online_request(struct be_ctx *be_ctx)
 static void be_check_online_done(struct tevent_req *req)
 {
     struct be_ctx *be_ctx;
-    struct dp_reply_std reply;
+    struct dp_reply_std *reply;
     errno_t ret;
 
     be_ctx = tevent_req_callback_data(req, struct be_ctx);
@@ -260,7 +260,7 @@ static void be_check_online_done(struct tevent_req *req)
         goto done;
     }
 
-    switch (reply.dp_error) {
+    switch (reply->dp_error) {
     case DP_ERR_OK:
         DEBUG(SSSDBG_TRACE_FUNC, "Backend is online\n");
         break;
@@ -275,7 +275,7 @@ static void be_check_online_done(struct tevent_req *req)
 
     be_ctx->check_online_ref_count--;
 
-    if (reply.dp_error != DP_ERR_OK && be_ctx->check_online_ref_count > 0) {
+    if (reply->dp_error != DP_ERR_OK && be_ctx->check_online_ref_count > 0) {
         ret = be_check_online_request(be_ctx);
         if (ret != EOK) {
             DEBUG(SSSDBG_CRIT_FAILURE, "Unable to create check online req.\n");
@@ -286,8 +286,8 @@ static void be_check_online_done(struct tevent_req *req)
 
 done:
     be_ctx->check_online_ref_count = 0;
-    if (reply.dp_error != DP_ERR_OFFLINE) {
-        if (reply.dp_error != DP_ERR_OK) {
+    if (reply->dp_error != DP_ERR_OFFLINE) {
+        if (reply->dp_error != DP_ERR_OK) {
             reset_fo(be_ctx);
         }
         be_reset_offline(be_ctx);

From 597fe91036dd9b8683b58b7510aa2b449715ce57 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fabiano=20Fid=C3=AAncio?= <fidencio@redhat.com>
Date: Thu, 12 Oct 2017 10:15:22 +0200
Subject: [PATCH 2/2] DP: Log to syslog whether it's online or offline
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Instead of requiring that admins enable and look at our logs, let's log
to syslog what's the DP status.

Resolves: https://pagure.io/SSSD/sssd/issue/3307

Signed-off-by: Fabiano Fidêncio <fidencio@redhat.com>
---
 src/providers/data_provider_be.c | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/src/providers/data_provider_be.c b/src/providers/data_provider_be.c
index e564bc11d..d167c9ac6 100644
--- a/src/providers/data_provider_be.c
+++ b/src/providers/data_provider_be.c
@@ -251,6 +251,7 @@ static void be_check_online_done(struct tevent_req *req)
     struct be_ctx *be_ctx;
     struct dp_reply_std *reply;
     errno_t ret;
+    static int last_dp_state = -1;
 
     be_ctx = tevent_req_callback_data(req, struct be_ctx);
 
@@ -262,9 +263,17 @@ static void be_check_online_done(struct tevent_req *req)
 
     switch (reply->dp_error) {
     case DP_ERR_OK:
+        if (last_dp_state != DP_ERR_OK) {
+            last_dp_state = DP_ERR_OK;
+            sss_log(SSS_LOG_INFO, "Backend is online\n");
+        }
         DEBUG(SSSDBG_TRACE_FUNC, "Backend is online\n");
         break;
     case DP_ERR_OFFLINE:
+        if (last_dp_state != DP_ERR_OFFLINE) {
+            last_dp_state = DP_ERR_OFFLINE;
+            sss_log(SSS_LOG_INFO, "Backend is offline\n");
+        }
         DEBUG(SSSDBG_TRACE_FUNC, "Backend is offline\n");
         break;
     default:
