diff options
author | Pavel Reichl <preichl@redhat.com> | 2014-07-22 19:45:06 +0200 |
---|---|---|
committer | Jakub Hrozek <jhrozek@redhat.com> | 2014-07-23 15:40:56 +0200 |
commit | b53f1e74acee48c5f22f7532829e1934c68d4637 (patch) | |
tree | 17edca799cada2cde9e78cd94b2e3e99ec4a7e98 /src/providers | |
parent | ed346bcc84b8a326996e5550771773d8e63f17c2 (diff) | |
download | sssd-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/providers')
-rw-r--r-- | src/providers/ldap/sdap_async_initgroups.c | 70 |
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)============================= */ |