winbind: call lp_winbind_enum_{users,groups}() already in set{pw,gr}ent()
authorStefan Metzmacher <metze@samba.org>
Fri, 16 Feb 2018 15:09:58 +0000 (16:09 +0100)
committerStefan Metzmacher <metze@samba.org>
Fri, 23 Feb 2018 03:09:18 +0000 (04:09 +0100)
This way we don't keep winbindd_cli_state->{pw,gr}ent_state arround forever,
if the client forgets an explicit end{pw,gr}ent().

This allows client_is_idle() return true in more cases.

BUG: https://bugzilla.samba.org/show_bug.cgi?id=13293

Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Volker Lendecke <vl@samba.org>
source3/winbindd/winbindd_getgrent.c
source3/winbindd/winbindd_getpwent.c
source3/winbindd/winbindd_setgrent.c
source3/winbindd/winbindd_setpwent.c

index 2c8cbac083a912b559b41d69b4fe67c840fe2395..1056555dc230dbab32777d6eff13b9706797946d 100644 (file)
@@ -50,11 +50,6 @@ struct tevent_req *winbindd_getgrent_send(TALLOC_CTX *mem_ctx,
 
        DEBUG(3, ("[%5lu]: getgrent\n", (unsigned long)cli->pid));
 
-       if (!lp_winbind_enum_groups()) {
-               tevent_req_nterror(req, NT_STATUS_NO_MORE_ENTRIES);
-               return tevent_req_post(req, ev);
-       }
-
        if (cli->grent_state == NULL) {
                tevent_req_nterror(req, NT_STATUS_NO_MORE_ENTRIES);
                return tevent_req_post(req, ev);
index 3c035eac8a6f7adebeaaa42dbc73cf126e5c9022..d33f5f9864f63b1859deabb6d6a27fe839286cba 100644 (file)
@@ -49,11 +49,6 @@ struct tevent_req *winbindd_getpwent_send(TALLOC_CTX *mem_ctx,
 
        DEBUG(3, ("[%5lu]: getpwent\n", (unsigned long)cli->pid));
 
-       if (!lp_winbind_enum_users()) {
-               tevent_req_nterror(req, NT_STATUS_NO_MORE_ENTRIES);
-               return tevent_req_post(req, ev);
-       }
-
        if (cli->pwent_state == NULL) {
                tevent_req_nterror(req, NT_STATUS_NO_MORE_ENTRIES);
                return tevent_req_post(req, ev);
index 79aa8c35962668f38c8cced8b6e3d57493772604..ab7fa98425bfccd04b6b3bd75d04b295c247dfa7 100644 (file)
@@ -39,6 +39,11 @@ struct tevent_req *winbindd_setgrent_send(TALLOC_CTX *mem_ctx,
        }
        TALLOC_FREE(cli->grent_state);
 
+       if (!lp_winbind_enum_groups()) {
+               tevent_req_done(req);
+               return tevent_req_post(req, ev);
+       }
+
        cli->grent_state = talloc_zero(cli, struct getgrent_state);
        if (tevent_req_nomem(cli->grent_state, req)) {
                return tevent_req_post(req, ev);
index af287584757439b60a3f84a82ce2c6afe9661bee..4591731923a6fb8e1402cee58f76d553f982ebdb 100644 (file)
@@ -39,6 +39,11 @@ struct tevent_req *winbindd_setpwent_send(TALLOC_CTX *mem_ctx,
        }
        TALLOC_FREE(cli->pwent_state);
 
+       if (!lp_winbind_enum_users()) {
+               tevent_req_done(req);
+               return tevent_req_post(req, ev);
+       }
+
        cli->pwent_state = talloc_zero(cli, struct getpwent_state);
        if (tevent_req_nomem(cli->pwent_state, req)) {
                return tevent_req_post(req, ev);