svn commit: samba r8904 - in branches/SAMBA_4_0/source/libnet: .

mimir at samba.org mimir at samba.org
Tue Aug 2 01:12:58 GMT 2005


Author: mimir
Date: 2005-08-02 01:12:58 +0000 (Tue, 02 Aug 2005)
New Revision: 8904

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=8904

Log:
Split off the query stage as a separate function.


rafal


Modified:
   branches/SAMBA_4_0/source/libnet/userman.c


Changeset:
Modified: branches/SAMBA_4_0/source/libnet/userman.c
===================================================================
--- branches/SAMBA_4_0/source/libnet/userman.c	2005-08-01 22:19:28 UTC (rev 8903)
+++ branches/SAMBA_4_0/source/libnet/userman.c	2005-08-02 01:12:58 UTC (rev 8904)
@@ -591,10 +591,6 @@
 	c->status = dcerpc_ndr_request_recv(s->req);
 	NT_STATUS_NOT_OK_RETURN(c->status);
 
-	if (s->stage == USERMOD_QUERY) {
-		s->info = *s->queryuser.out.info;
-	}
-
 	/* Prepare UserInfo level and data based on bitmask field */
 	s->change.fields = usermod_setfields(s, &level, i);
 
@@ -620,6 +616,35 @@
 
 
 /**
+ * Stage 2a (optional): Query the user information
+ */
+static NTSTATUS usermod_query(struct composite_context *c,
+			      struct usermod_state *s)
+{
+	union samr_UserInfo *i = &s->info;
+	uint16_t level;
+
+	c->status = dcerpc_ndr_request_recv(s->req);
+	NT_STATUS_NOT_OK_RETURN(c->status);
+
+	s->info = *s->queryuser.out.info;
+
+	s->change.fields = usermod_setfields(s, &level, i);
+
+	s->setuser.in.user_handle  = &s->user_handle;
+	s->setuser.in.level        = level;
+	s->setuser.in.info         = i;
+	
+	s->req = dcerpc_samr_SetUserInfo_send(s->pipe, c, &s->setuser);
+
+	s->req->async.callback = usermod_handler;
+	s->req->async.private  = c;
+
+	return NT_STATUS_OK;
+}
+
+
+/**
  * Stage 3: Set new user account data
  */
 static NTSTATUS usermod_modify(struct composite_context *c,
@@ -653,10 +678,13 @@
 		break;
 
 	case USERMOD_OPEN:
-	case USERMOD_QUERY:
 		c->status = usermod_open(c, s);
 		break;
 
+	case USERMOD_QUERY:
+		c->status = usermod_query(c, s);
+		break;
+
 	case USERMOD_MODIFY:
 		c->status = usermod_modify(c, s);
 		break;



More information about the samba-cvs mailing list