summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorPavel Reichl <preichl@redhat.com>2014-07-22 19:45:06 +0200
committerJakub Hrozek <jhrozek@redhat.com>2014-07-23 15:40:56 +0200
commitb53f1e74acee48c5f22f7532829e1934c68d4637 (patch)
tree17edca799cada2cde9e78cd94b2e3e99ec4a7e98 /src
parented346bcc84b8a326996e5550771773d8e63f17c2 (diff)
downloadsssd-b53f1e74acee48c5f22f7532829e1934c68d4637.tar.gz
sssd-b53f1e74acee48c5f22f7532829e1934c68d4637.tar.xz
sssd-b53f1e74acee48c5f22f7532829e1934c68d4637.zip
SDAP: reduce code duplicity-rfc2307bis nested groups
Move copy&pasted code for iteration of nested groups into separate function. Reviewed-by: Michal Židek <mzidek@redhat.com>
Diffstat (limited to 'src')
-rw-r--r--src/providers/ldap/sdap_async_initgroups.c70
1 files changed, 29 insertions, 41 deletions
diff --git a/src/providers/ldap/sdap_async_initgroups.c b/src/providers/ldap/sdap_async_initgroups.c
index c7169dda7..d3c727591 100644
--- a/src/providers/ldap/sdap_async_initgroups.c
+++ b/src/providers/ldap/sdap_async_initgroups.c
@@ -2404,6 +2404,33 @@ static errno_t rfc2307bis_nested_groups_next_base(struct tevent_req *req)
return EOK;
}
+static void
+rfc2307bis_nested_groups_iterate(struct tevent_req *req,
+ struct sdap_rfc2307bis_nested_ctx *state)
+{
+ errno_t ret;
+
+ state->group_iter++;
+ while (state->group_iter < state->num_groups) {
+ ret = rfc2307bis_nested_groups_step(req);
+ if (ret == EAGAIN) {
+ /* Looking up parent groups.. */
+ return;
+ } else if (ret != EOK) {
+ tevent_req_error(req, ret);
+ return;
+ }
+
+ /* EOK means this group has already been processed
+ * in another nesting level */
+ state->group_iter++;
+ }
+
+ if (state->group_iter == state->num_groups) {
+ /* All groups processed. Done. */
+ tevent_req_done(req);
+ }
+}
static void rfc2307bis_nested_groups_done(struct tevent_req *subreq);
static void rfc2307bis_nested_groups_process(struct tevent_req *subreq)
@@ -2507,26 +2534,7 @@ static void rfc2307bis_nested_groups_process(struct tevent_req *subreq)
/* No parent groups for this group in LDAP
* Move on to the next group
*/
- state->group_iter++;
- while (state->group_iter < state->num_groups) {
- ret = rfc2307bis_nested_groups_step(req);
- if (ret == EAGAIN) {
- /* Looking up parent groups.. */
- return;
- } else if (ret != EOK) {
- tevent_req_error(req, ret);
- return;
- }
-
- /* EOK means this group has already been processed
- * in another nesting level */
- state->group_iter++;
- }
-
- if (state->group_iter == state->num_groups) {
- /* All groups processed. Done. */
- tevent_req_done(req);
- }
+ rfc2307bis_nested_groups_iterate(req, state);
return;
}
@@ -2569,27 +2577,7 @@ static void rfc2307bis_nested_groups_done(struct tevent_req *subreq)
return;
}
- state->group_iter++;
- while (state->group_iter < state->num_groups) {
- ret = rfc2307bis_nested_groups_step(req);
- if (ret == EAGAIN) {
- /* Looking up parent groups.. */
- return;
- } else if (ret != EOK) {
- tevent_req_error(req, ret);
- return;
- }
-
- /* EOK means this group has already been processed
- * in another nesting level */
- state->group_iter++;
- }
-
- if (state->group_iter == state->num_groups) {
- /* All groups processed. Done. */
- tevent_req_done(req);
- return;
- }
+ rfc2307bis_nested_groups_iterate(req, state);
}
/* ==Initgr-call-(groups-a-user-is-member-of)============================= */