diff options
author | Andreas Schneider <asn@samba.org> | 2012-01-03 16:54:39 +0100 |
---|---|---|
committer | Karolin Seeger <kseeger@samba.org> | 2012-01-23 21:29:01 +0100 |
commit | c30ce0bae6d5b29f31b5172ace185fccf9b28a12 (patch) | |
tree | 4dc51821e6ae4b97c8439e380331be27b29a3c18 | |
parent | 45c5b631eb6e7789e399f13b426b7d60b9d89653 (diff) | |
download | samba-c30ce0bae6d5b29f31b5172ace185fccf9b28a12.tar.gz |
s3-winbind: Move finding the domain to it's own function.
This the first part to fix bug #8678.
(cherry picked from commit 5075e565684627dfbd23f715da344b4365351ccb)
(cherry picked from commit 2fca06a63d47619f2b6902b1c8601021843c4b95)
-rw-r--r-- | source3/winbindd/wb_next_pwent.c | 32 |
1 files changed, 21 insertions, 11 deletions
diff --git a/source3/winbindd/wb_next_pwent.c b/source3/winbindd/wb_next_pwent.c index d47b2fca912..998830952b2 100644 --- a/source3/winbindd/wb_next_pwent.c +++ b/source3/winbindd/wb_next_pwent.c @@ -31,6 +31,26 @@ struct wb_next_pwent_state { static void wb_next_pwent_fetch_done(struct tevent_req *subreq); static void wb_next_pwent_fill_done(struct tevent_req *subreq); +static struct winbindd_domain *wb_next_find_domain(struct winbindd_domain *domain) +{ + if (domain == NULL) { + domain = domain_list(); + } else { + domain = domain->next; + } + + if ((domain != NULL) + && sid_check_is_domain(&domain->sid)) { + domain = domain->next; + } + + if (domain == NULL) { + return NULL; + } + + return domain; +} + struct tevent_req *wb_next_pwent_send(TALLOC_CTX *mem_ctx, struct tevent_context *ev, struct getpwent_state *gstate, @@ -50,17 +70,7 @@ struct tevent_req *wb_next_pwent_send(TALLOC_CTX *mem_ctx, if (state->gstate->next_user >= state->gstate->num_users) { TALLOC_FREE(state->gstate->users); - if (state->gstate->domain == NULL) { - state->gstate->domain = domain_list(); - } else { - state->gstate->domain = state->gstate->domain->next; - } - - if ((state->gstate->domain != NULL) - && sid_check_is_domain(&state->gstate->domain->sid)) { - state->gstate->domain = state->gstate->domain->next; - } - + state->gstate->domain = wb_next_find_domain(state->gstate->domain); if (state->gstate->domain == NULL) { tevent_req_nterror(req, NT_STATUS_NO_MORE_ENTRIES); return tevent_req_post(req, ev); |