summaryrefslogtreecommitdiff
path: root/source4/scripting/ejs
diff options
context:
space:
mode:
authorRafal Szczesniak <mimir@samba.org>2007-01-18 23:21:59 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 14:43:45 -0500
commitc1aac87d34a9596e449a4baa661b44009552b5b4 (patch)
tree8ea270959c2144d610d976b1c67143e871fef038 /source4/scripting/ejs
parent875d8b4109ddc2c6b5d0ba33a3874e73b249ec91 (diff)
downloadsamba-c1aac87d34a9596e449a4baa661b44009552b5b4.tar.gz
samba-c1aac87d34a9596e449a4baa661b44009552b5b4.tar.bz2
samba-c1aac87d34a9596e449a4baa661b44009552b5b4.zip
r20885: - I forgot the page size passed to enumeration function is actually
size of a buffer for result returned, not number of entries - pass libnet function returned status to UserListCtx creation to properly mark the last chunk of the list rafal (This used to be commit 05d307546f93794a0a981c3aa942669b9b18afd1)
Diffstat (limited to 'source4/scripting/ejs')
-rw-r--r--source4/scripting/ejs/ejsnet/mpr_user.c10
-rw-r--r--source4/scripting/ejs/ejsnet/net_user.c4
2 files changed, 10 insertions, 4 deletions
diff --git a/source4/scripting/ejs/ejsnet/mpr_user.c b/source4/scripting/ejs/ejsnet/mpr_user.c
index 9a49262dc6..efeb68ffc1 100644
--- a/source4/scripting/ejs/ejsnet/mpr_user.c
+++ b/source4/scripting/ejs/ejsnet/mpr_user.c
@@ -100,11 +100,13 @@ done:
UserListCtx.Users[]
UserListCtx.ResumeIndex
UserListCtx.Count
+ UserListCtx.EndOfList
*/
-struct MprVar mprUserListCtx(TALLOC_CTX *mem_ctx, struct libnet_UserList *list)
+struct MprVar mprUserListCtx(TALLOC_CTX *mem_ctx, struct libnet_UserList *list, NTSTATUS result)
{
const char *name = "UserListCtx";
NTSTATUS status;
+ bool endOfList;
struct MprVar mprListCtx, mprUserList;
struct MprVar mprUser, mprSid, mprUsername;
int i;
@@ -114,6 +116,9 @@ struct MprVar mprUserListCtx(TALLOC_CTX *mem_ctx, struct libnet_UserList *list)
goto done;
}
+ endOfList = (NT_STATUS_EQUAL(result, NT_STATUS_NO_MORE_ENTRIES) ||
+ NT_STATUS_IS_OK(result));
+
mprUserList = mprArray("Users");
for (i = 0; i < list->out.count; i++) {
struct userlist u = list->out.users[i];
@@ -128,7 +133,7 @@ struct MprVar mprUserListCtx(TALLOC_CTX *mem_ctx, struct libnet_UserList *list)
mprSetVar(&mprUser, "SID", mprSid);
/* add the object to the array being constructed */
- mprAddArray(&mprUserList, 0, mprUser);
+ mprAddArray(&mprUserList, i, mprUser);
}
mprListCtx = mprObject(name);
@@ -138,6 +143,7 @@ struct MprVar mprUserListCtx(TALLOC_CTX *mem_ctx, struct libnet_UserList *list)
if (!NT_STATUS_IS_OK(status)) goto done;
status = mprSetVar(&mprListCtx, "ResumeIndex", mprCreateIntegerVar((int)list->out.resume_index));
if (!NT_STATUS_IS_OK(status)) goto done;
+ status = mprSetVar(&mprListCtx, "EndOfList", mprCreateBoolVar(endOfList));
done:
return mprListCtx;
diff --git a/source4/scripting/ejs/ejsnet/net_user.c b/source4/scripting/ejs/ejsnet/net_user.c
index 7563ef2e72..a13e84c147 100644
--- a/source4/scripting/ejs/ejsnet/net_user.c
+++ b/source4/scripting/ejs/ejsnet/net_user.c
@@ -299,7 +299,7 @@ static int ejs_net_userlist(MprVarHandle eid, int argc, struct MprVar **argv)
NTSTATUS status;
struct libnet_context *ctx;
const char *userlist_domain;
- int page_size = 10; /* TODO: this should be specified in a nicer way */
+ int page_size = 512; /* TODO: this should be specified in a nicer way */
struct libnet_UserList req;
struct MprVar mprListCtx, *mprInListCtx;
@@ -359,7 +359,7 @@ static int ejs_net_userlist(MprVarHandle eid, int argc, struct MprVar **argv)
goto done;
}
- mprListCtx = mprUserListCtx(mem_ctx, &req);
+ mprListCtx = mprUserListCtx(mem_ctx, &req, status);
done:
talloc_free(mem_ctx);