s4:winbind: fill response.data.num_entries for WINBINDD_LIST_USERS
authorStefan Metzmacher <metze@samba.org>
Mon, 19 Apr 2010 14:08:59 +0000 (16:08 +0200)
committerStefan Metzmacher <metze@samba.org>
Mon, 19 Apr 2010 14:09:14 +0000 (16:09 +0200)
metze

source4/winbind/wb_cmd_list_users.c
source4/winbind/wb_samba3_cmd.c

index ac44794acd7e84fe1c5a94c79cf92ee62c0dc6b9..4728f3ad55f662a3ed6cc1811896f451bcb40f99 100644 (file)
@@ -32,6 +32,7 @@ struct cmd_list_users_state {
        char *domain_name;
        uint32_t resume_index;
        char *result;
+       uint32_t num_users;
 };
 
 static void cmd_list_users_recv_domain(struct composite_context *ctx);
@@ -55,6 +56,7 @@ struct composite_context *wb_cmd_list_users_send(TALLOC_CTX *mem_ctx,
        result->private_data = state;
        state->service = service;
        state->resume_index = 0;
+       state->num_users = 0;
        state->result = talloc_strdup(state, "");
        if (composite_nomem(state->result, state->ctx)) return result;
 
@@ -142,6 +144,7 @@ static void cmd_list_users_recv_user_list(struct composite_context *ctx)
                DEBUG(5, ("Appending user '%s'\n", user_list->out.users[i].username));
                state->result = talloc_asprintf_append_buffer(state->result, "%s,",
                                        user_list->out.users[i].username);
+               state->num_users++;
        }
 
        /* If the status is OK, we're finished, there's no more users.
@@ -174,7 +177,7 @@ static void cmd_list_users_recv_user_list(struct composite_context *ctx)
 
 NTSTATUS wb_cmd_list_users_recv(struct composite_context *ctx,
                TALLOC_CTX *mem_ctx, uint32_t *extra_data_len,
-               char **extra_data)
+               char **extra_data, uint32_t *num_users)
 {
        NTSTATUS status = composite_wait(ctx);
 
@@ -186,6 +189,7 @@ NTSTATUS wb_cmd_list_users_recv(struct composite_context *ctx,
 
                *extra_data_len = strlen(state->result);
                *extra_data = talloc_steal(mem_ctx, state->result);
+               *num_users = state->num_users;
        }
 
        talloc_free(ctx);
index 86ed827e6c08d9c25092bce726b752a8bec4ef94..c66d696ccec745acce03bf65099a81dc92e386e1 100644 (file)
@@ -946,18 +946,20 @@ static void list_users_recv(struct composite_context *ctx)
                                struct wbsrv_samba3_call);
        uint32_t extra_data_len;
        char *extra_data;
+       uint32_t num_users;
        NTSTATUS status;
 
        DEBUG(5, ("list_users_recv called\n"));
 
        status = wb_cmd_list_users_recv(ctx, s3call, &extra_data_len,
-                       &extra_data);
+                       &extra_data, &num_users);
 
        if (NT_STATUS_IS_OK(status)) {
                s3call->response.extra_data.data = extra_data;
                s3call->response.length += extra_data_len;
                if (extra_data) {
                        s3call->response.length += 1;
+                       s3call->response.data.num_entries = num_users;
                }
        }