Apparently at some point we started returning errors in a way sssd_pam
doesn't like and auth was failing.
I hadn't much time to exactly analyze what was going on as I was
struggling with other problems while testing on a newly installed
rawhide.

Apparently this patch made it work for me, so I'll posting it for
consideration.

I'd like to revisit error handling after the feature complete.

Simo.

-- 
Simo Sorce * Red Hat, Inc * New York
>From c2699fdef22e521aeeb36561d01dfe6e04ac901d Mon Sep 17 00:00:00 2001
From: Simo Sorce <[email protected]>
Date: Tue, 10 Nov 2009 16:39:17 -0500
Subject: [PATCH] Try to fix offline logins

---
 VERSION                         |    2 +-
 server/providers/ldap/ldap_id.c |   18 ++++++------------
 2 files changed, 7 insertions(+), 13 deletions(-)

diff --git a/VERSION b/VERSION
index faef31a..972ef76 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-0.7.0
+0.7.9
diff --git a/server/providers/ldap/ldap_id.c b/server/providers/ldap/ldap_id.c
index 124ee7d..52391c2 100644
--- a/server/providers/ldap/ldap_id.c
+++ b/server/providers/ldap/ldap_id.c
@@ -709,10 +709,8 @@ static void sdap_account_info_users_done(struct tevent_req *req)
         dp_err = DP_ERR_FATAL;
         error = "Enum Users Failed";
 
-        if (ret == ETIMEDOUT) {
-            dp_err = DP_ERR_TIMEOUT;
-        }
-        if (ret == ETIMEDOUT || ret == EFAULT) {
+        if (ret == ETIMEDOUT || ret == EFAULT || ret == EIO) {
+            dp_err = DP_ERR_OFFLINE;
             ctx = talloc_get_type(breq->be_ctx->bet_info[BET_ID].pvt_bet_data,
                                   struct sdap_id_ctx);
             sdap_mark_offline(ctx);
@@ -737,10 +735,8 @@ static void sdap_account_info_groups_done(struct tevent_req *req)
         dp_err = DP_ERR_FATAL;
         error = "Enum Groups Failed";
 
-        if (ret == ETIMEDOUT) {
-            dp_err = DP_ERR_TIMEOUT;
-        }
-        if (ret == ETIMEDOUT || ret == EFAULT) {
+        if (ret == ETIMEDOUT || ret == EFAULT || ret == EIO) {
+            dp_err = DP_ERR_OFFLINE;
             ctx = talloc_get_type(breq->be_ctx->bet_info[BET_ID].pvt_bet_data,
                                   struct sdap_id_ctx);
             sdap_mark_offline(ctx);
@@ -765,10 +761,8 @@ static void sdap_account_info_initgr_done(struct tevent_req *req)
         dp_err = DP_ERR_FATAL;
         error = "Init Groups Failed";
 
-        if (ret == ETIMEDOUT) {
-            dp_err = DP_ERR_TIMEOUT;
-        }
-        if (ret == ETIMEDOUT || ret == EFAULT) {
+        if (ret == ETIMEDOUT || ret == EFAULT || ret == EIO) {
+            dp_err = DP_ERR_OFFLINE;
             ctx = talloc_get_type(breq->be_ctx->bet_info[BET_ID].pvt_bet_data,
                                   struct sdap_id_ctx);
             sdap_mark_offline(ctx);
-- 
1.6.5.2

_______________________________________________
sssd-devel mailing list
[email protected]
https://fedorahosted.org/mailman/listinfo/sssd-devel

Reply via email to