[SSSD] [PATCH] LDAP nested groups: Do not process callback with _post deep in the nested structure

Jakub Hrozek jhrozek at redhat.com
Tue May 22 15:43:43 UTC 2012


https://fedorahosted.org/sssd/ticket/1343

I still haven't been able to fully test the patch, but sending out for
review anyway.
-------------- next part --------------
>From d111b80ff5f49f5efcf3bf7d30abf76533e4d440 Mon Sep 17 00:00:00 2001
From: Jakub Hrozek <jhrozek at redhat.com>
Date: Tue, 22 May 2012 17:41:52 +0200
Subject: [PATCH] LDAP nested groups: Do not process callback with _post deep
 in the nested structure

https://fedorahosted.org/sssd/ticket/1343
---
 src/providers/ldap/sdap_async_groups.c |   22 ++++++++++------------
 1 file changed, 10 insertions(+), 12 deletions(-)

diff --git a/src/providers/ldap/sdap_async_groups.c b/src/providers/ldap/sdap_async_groups.c
index 84eb7cbfd6536f286c5bf4b1f41e150d003130aa..b587f668e678fd0b68eb401174fc2b097b3f4b87 100644
--- a/src/providers/ldap/sdap_async_groups.c
+++ b/src/providers/ldap/sdap_async_groups.c
@@ -2498,14 +2498,13 @@ static errno_t sdap_nested_group_lookup_user(struct tevent_req *req,
                 ret = sdap_nested_group_process_step(req);
             }
 
-            if (ret == EOK) {
-                /* EOK means it's complete */
+            if (ret != EOK && ret != EAGAIN) {
+                DEBUG(SSSDBG_OP_FAILURE, ("Nested group processing failed\n"));
+                return ret;
+            } else if (ret == EOK) {
+                DEBUG(SSSDBG_TRACE_FUNC, ("All done.\n"));
                 tevent_req_done(req);
-                tevent_req_post(req, state->ev);
-            } else if (ret != EAGAIN) {
-                return ret;
             }
-
             return EOK;
         }
         /*
@@ -2583,14 +2582,13 @@ static errno_t sdap_nested_group_lookup_group(struct tevent_req *req)
             ret = sdap_nested_group_process_step(req);
         }
 
-        if (ret == EOK) {
-            /* EOK means it's complete */
-            tevent_req_done(req);
-            tevent_req_post(req, state->ev);
-        } else if (ret != EAGAIN) {
+        if (ret != EOK && ret != EAGAIN) {
+            DEBUG(SSSDBG_OP_FAILURE, ("Nested group processing failed\n"));
             return ret;
+        } else if (ret == EOK) {
+            DEBUG(SSSDBG_TRACE_FUNC, ("All done.\n"));
+            tevent_req_done(req);
         }
-
         return EOK;
     }
 
-- 
1.7.10.1



More information about the sssd-devel mailing list