struct winbindd_request request; /* Request from client */
struct winbindd_response response; /* Respose to client */
+ BOOL getpwent_initialized; /* Has getpwent_state been initialized? */
+ BOOL getgrent_initialized; /* Has getgrent_state been initialized? */
struct getent_state *getpwent_state; /* State for getpwent() */
struct getent_state *getgrent_state; /* State for getgrent() */
};
DLIST_ADD(state->getgrent_state, domain_state);
}
+ state->getgrent_initialized = True;
+
return WINBINDD_OK;
}
DEBUG(3, ("[%5lu]: endgrent\n", (unsigned long)state->pid));
free_getent_state(state->getgrent_state);
+ state->getgrent_initialized = False;
state->getgrent_state = NULL;
return WINBINDD_OK;
group_list = (struct winbindd_gr *)state->response.extra_data;
+ if (!state->getgrent_initialized)
+ winbindd_setgrent(state);
+
if (!(ent = state->getgrent_state))
return WINBINDD_ERROR;
DLIST_ADD(state->getpwent_state, domain_state);
}
+ state->getpwent_initialized = True;
+
return WINBINDD_OK;
}
DEBUG(3, ("[%5lu]: endpwent\n", (unsigned long)state->pid));
free_getent_state(state->getpwent_state);
+ state->getpwent_initialized = False;
state->getpwent_state = NULL;
return WINBINDD_OK;
sizeof(struct winbindd_pw));
user_list = (struct winbindd_pw *)state->response.extra_data;
+
+ if (!state->getpwent_initialized)
+ winbindd_setpwent(state);
if (!(ent = state->getpwent_state))
return WINBINDD_ERROR;