svn commit: samba r14137 - in branches/SAMBA_4_0/source/librpc/rpc: .

metze at samba.org metze at samba.org
Fri Mar 10 10:54:37 GMT 2006


Author: metze
Date: 2006-03-10 10:54:37 +0000 (Fri, 10 Mar 2006)
New Revision: 14137

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

Log:
move **p2 to the _recv function for setup the second pipe

metze
Modified:
   branches/SAMBA_4_0/source/librpc/rpc/dcerpc_connect.c
   branches/SAMBA_4_0/source/librpc/rpc/dcerpc_schannel.c


Changeset:
Modified: branches/SAMBA_4_0/source/librpc/rpc/dcerpc_connect.c
===================================================================
--- branches/SAMBA_4_0/source/librpc/rpc/dcerpc_connect.c	2006-03-10 10:31:47 UTC (rev 14136)
+++ branches/SAMBA_4_0/source/librpc/rpc/dcerpc_connect.c	2006-03-10 10:54:37 UTC (rev 14137)
@@ -966,7 +966,7 @@
 
 struct sec_conn_state {
 	struct dcerpc_pipe *pipe;
-	struct dcerpc_pipe **pipe2;
+	struct dcerpc_pipe *pipe2;
 	struct dcerpc_binding *binding;
 	struct smbcli_tree *tree;
 };
@@ -978,9 +978,7 @@
 static void continue_pipe_open(struct composite_context *c);
 
 
-struct composite_context* dcerpc_secondary_connection_send(TALLOC_CTX *mem_ctx,
-							   struct dcerpc_pipe *p,
-							   struct dcerpc_pipe **p2,
+struct composite_context* dcerpc_secondary_connection_send(struct dcerpc_pipe *p,
 							   struct dcerpc_binding *b)
 {
 	struct composite_context *c;
@@ -989,9 +987,11 @@
 	struct composite_context *pipe_tcp_req;
 	struct composite_context *pipe_ncalrpc_req;
 	
-	c = talloc_zero(mem_ctx, struct composite_context);
+	c = talloc_zero(p, struct composite_context);
 	if (c == NULL) return NULL;
 
+	c->event_ctx = p->conn->event_ctx;
+
 	s = talloc_zero(c, struct sec_conn_state);
 	if (s == NULL) {
 		composite_error(c, NT_STATUS_NO_MEMORY);
@@ -1002,17 +1002,11 @@
 	c->private_data = s;
 
 	s->pipe     = p;
-	s->pipe2    = p2;
 	s->binding  = b;
 
-	(*s->pipe2) = dcerpc_pipe_init(s->pipe, s->pipe->conn->event_ctx);
-	if (s->pipe2 == NULL) {
-		composite_error(c, NT_STATUS_NO_MEMORY);
-		return c;
-	}
+	s->pipe2 = dcerpc_pipe_init(c, s->pipe->conn->event_ctx);
+	if (composite_nomem(s->pipe2, c)) return c;
 
-	c->event_ctx = (*s->pipe2)->conn->event_ctx;
-
 	switch (s->pipe->conn->transport.transport) {
 	case NCACN_NP:
 		s->tree = dcerpc_smb_tree(s->pipe->conn);
@@ -1021,7 +1015,7 @@
 			return c;
 		}
 
-		pipe_smb_req = dcerpc_pipe_open_smb_send((*s->pipe2)->conn, s->tree,
+		pipe_smb_req = dcerpc_pipe_open_smb_send(s->pipe2->conn, s->tree,
 							 s->binding->endpoint);
 		if (composite_nomem(pipe_smb_req, c)) return c;
 
@@ -1029,7 +1023,7 @@
 		return c;
 
 	case NCACN_IP_TCP:
-		pipe_tcp_req = dcerpc_pipe_open_tcp_send((*s->pipe2)->conn,
+		pipe_tcp_req = dcerpc_pipe_open_tcp_send(s->pipe2->conn,
 							 s->binding->host,
 							 atoi(s->binding->endpoint));
 		if (composite_nomem(pipe_tcp_req, c)) return c;
@@ -1038,7 +1032,7 @@
 		return c;
 
 	case NCALRPC:
-		pipe_ncalrpc_req = dcerpc_pipe_open_pipe_send((*s->pipe2)->conn,
+		pipe_ncalrpc_req = dcerpc_pipe_open_pipe_send(s->pipe2->conn,
 							      s->binding->endpoint);
 		if (composite_nomem(pipe_ncalrpc_req, c)) return c;
 
@@ -1057,14 +1051,9 @@
 {
 	struct composite_context *c = talloc_get_type(ctx->async.private_data,
 						      struct composite_context);
-	struct sec_conn_state *s = talloc_get_type(c->private_data,
-						   struct sec_conn_state);
 	
 	c->status = dcerpc_pipe_open_smb_recv(ctx);
-	if (!composite_is_ok(c)) {
-		talloc_free(*s->pipe2);
-		return;
-	}
+	if (!composite_is_ok(c)) return;
 
 	continue_pipe_open(c);
 }
@@ -1074,14 +1063,9 @@
 {
 	struct composite_context *c = talloc_get_type(ctx->async.private_data,
 						      struct composite_context);
-	struct sec_conn_state *s = talloc_get_type(c->private_data,
-						   struct sec_conn_state);
 	
 	c->status = dcerpc_pipe_open_tcp_recv(ctx);
-	if (!composite_is_ok(c)) {
-		talloc_free(*s->pipe2);
-		return;
-	}
+	if (!composite_is_ok(c)) return;
 
 	continue_pipe_open(c);
 }
@@ -1091,14 +1075,9 @@
 {
 	struct composite_context *c = talloc_get_type(ctx->async.private_data,
 						      struct composite_context);
-	struct sec_conn_state *s = talloc_get_type(c->private_data,
-						   struct sec_conn_state);
 
 	c->status = dcerpc_pipe_open_pipe_recv(ctx);
-	if (!composite_is_ok(c)) {
-		talloc_free(*s->pipe2);
-		return;
-	}
+	if (!composite_is_ok(c)) return;
 
 	continue_pipe_open(c);
 }
@@ -1110,9 +1089,9 @@
 
 	s = talloc_get_type(c->private_data, struct sec_conn_state);
 
-	(*s->pipe2)->conn->flags = s->pipe->conn->flags;
-	(*s->pipe2)->binding     = s->binding;
-	if (!talloc_reference((*s->pipe2), s->binding)) {
+	s->pipe2->conn->flags = s->pipe->conn->flags;
+	s->pipe2->binding     = s->binding;
+	if (!talloc_reference(s->pipe2, s->binding)) {
 		composite_error(c, NT_STATUS_NO_MEMORY);
 		return;
 	}
@@ -1121,15 +1100,22 @@
 }
 
 
-NTSTATUS dcerpc_secondary_connection_recv(struct composite_context *c)
+NTSTATUS dcerpc_secondary_connection_recv(struct composite_context *c,
+					  struct dcerpc_pipe **p2)
 {
 	NTSTATUS status = composite_wait(c);
+	struct sec_conn_state *s;
 
+	s = talloc_get_type(c->private_data, struct sec_conn_state);
+
+	if (NT_STATUS_IS_OK(status)) {
+		*p2 = talloc_steal(s->pipe, s->pipe2);
+	}
+
 	talloc_free(c);
 	return status;
 }
 
-
 /*
   create a secondary dcerpc connection from a primary connection
   - sync version
@@ -1143,6 +1129,6 @@
 {
 	struct composite_context *c;
 	
-	c = dcerpc_secondary_connection_send(NULL, p, p2, b);
-	return dcerpc_secondary_connection_recv(c);
+	c = dcerpc_secondary_connection_send(p, b);
+	return dcerpc_secondary_connection_recv(c, p2);
 }

Modified: branches/SAMBA_4_0/source/librpc/rpc/dcerpc_schannel.c
===================================================================
--- branches/SAMBA_4_0/source/librpc/rpc/dcerpc_schannel.c	2006-03-10 10:31:47 UTC (rev 14136)
+++ branches/SAMBA_4_0/source/librpc/rpc/dcerpc_schannel.c	2006-03-10 10:54:37 UTC (rev 14137)
@@ -65,7 +65,7 @@
 		return;
 	}
 
-	sec_conn_req = dcerpc_secondary_connection_send(c, s->pipe, &s->pipe2,
+	sec_conn_req = dcerpc_secondary_connection_send(s->pipe,
 							s->binding);
 	if (composite_nomem(sec_conn_req, c)) return;
 
@@ -82,7 +82,7 @@
 	c = talloc_get_type(ctx->async.private_data, struct composite_context);
 	s = talloc_get_type(c->private_data, struct schannel_key_state);
 
-	c->status = dcerpc_secondary_connection_recv(ctx);
+	c->status = dcerpc_secondary_connection_recv(ctx, &s->pipe2);
 	if (!composite_is_ok(c)) return;
 
 	auth_none_req = dcerpc_bind_auth_none_send(c, s->pipe2, &dcerpc_table_netlogon);



More information about the samba-cvs mailing list