s3-winbind: Move finding the domain to it's own function.
authorAndreas Schneider <asn@samba.org>
Tue, 3 Jan 2012 15:54:39 +0000 (16:54 +0100)
committerAndreas Schneider <asn@cryptomilk.org>
Wed, 4 Jan 2012 15:56:06 +0000 (16:56 +0100)
This the first part to fix bug #8678.

source3/winbindd/wb_next_pwent.c

index d47b2fca912e1c58eb59e9459ec5423ddf4cd12b..998830952b296bdbab25fd7193edf2b6a89fa47a 100644 (file)
@@ -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);