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

jelmer at samba.org jelmer at samba.org
Wed Aug 29 02:01:59 GMT 2007


Author: jelmer
Date: 2007-08-29 02:01:56 +0000 (Wed, 29 Aug 2007)
New Revision: 24763

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

Log:
Allow users to leave out the transport in DCE/RPC binding strings. If the transport is not specified, it will be retrieved from the remote endpoint mapper or the IDL file.

This means that 'smbtorture localhost RPC-WINREG' works now.
Modified:
   branches/SAMBA_4_0/
   branches/SAMBA_4_0/source/librpc/rpc/dcerpc_connect.c
   branches/SAMBA_4_0/source/librpc/rpc/dcerpc_util.c


Changeset:

Property changes on: branches/SAMBA_4_0
___________________________________________________________________
Name: bzr:revision-info
...skipped...
Name: bzr:revision-id:v3-trunk0
...skipped...

Modified: branches/SAMBA_4_0/source/librpc/rpc/dcerpc_connect.c
===================================================================
--- branches/SAMBA_4_0/source/librpc/rpc/dcerpc_connect.c	2007-08-29 01:48:46 UTC (rev 24762)
+++ branches/SAMBA_4_0/source/librpc/rpc/dcerpc_connect.c	2007-08-29 02:01:56 UTC (rev 24763)
@@ -733,6 +733,14 @@
 			dcerpc_connect_timeout_handler, c);
 	
 	switch (s->binding->transport) {
+	case NCA_UNKNOWN: {
+		struct composite_context *binding_req;
+		binding_req = dcerpc_epm_map_binding_send(c, s->binding, s->table,
+							  s->pipe->conn->event_ctx);
+		composite_continue(c, binding_req, continue_map_binding, c);
+		return c;
+		}
+
 	case NCACN_NP:
 	case NCACN_IP_TCP:
 	case NCALRPC:

Modified: branches/SAMBA_4_0/source/librpc/rpc/dcerpc_util.c
===================================================================
--- branches/SAMBA_4_0/source/librpc/rpc/dcerpc_util.c	2007-08-29 01:48:46 UTC (rev 24762)
+++ branches/SAMBA_4_0/source/librpc/rpc/dcerpc_util.c	2007-08-29 02:01:56 UTC (rev 24763)
@@ -531,7 +531,9 @@
 	return NULL;
 }
 
-static NTSTATUS dcerpc_floor_set_rhs_data(TALLOC_CTX *mem_ctx, struct epm_floor *epm_floor,  const char *data)
+static NTSTATUS dcerpc_floor_set_rhs_data(TALLOC_CTX *mem_ctx, 
+					  struct epm_floor *epm_floor,  
+					  const char *data)
 {
 	switch (epm_floor->lhs.protocol) {
 	case EPM_PROTOCOL_TCP:
@@ -648,7 +650,9 @@
 	return (unsigned int)-1;
 }
 
-NTSTATUS dcerpc_binding_from_tower(TALLOC_CTX *mem_ctx, struct epm_tower *tower, struct dcerpc_binding **b_out)
+NTSTATUS dcerpc_binding_from_tower(TALLOC_CTX *mem_ctx, 
+				   struct epm_tower *tower, 
+				   struct dcerpc_binding **b_out)
 {
 	NTSTATUS status;
 	struct dcerpc_binding *binding;
@@ -932,7 +936,7 @@
 	/*
 	  First, check if there is a default endpoint specified in the IDL
 	*/
-	if (table) {
+	if (table != NULL) {
 		struct dcerpc_binding *default_binding;
 
 		/* Find one of the default pipes for this interface */
@@ -940,7 +944,10 @@
 			status = dcerpc_parse_binding(mem_ctx, table->endpoints->names[i], &default_binding);
 
 			if (NT_STATUS_IS_OK(status)) {
-				if (default_binding->transport == binding->transport && default_binding->endpoint) {
+				if (binding->transport == NCA_UNKNOWN) 
+					binding->transport = default_binding->transport;
+				if (default_binding->transport == binding->transport && 
+					default_binding->endpoint) {
 					binding->endpoint = talloc_reference(binding, default_binding->endpoint);
 					talloc_free(default_binding);
 
@@ -967,7 +974,8 @@
 	epmapper_binding->endpoint		= NULL;
 
 	/* initiate rpc pipe connection */
-	pipe_connect_req = dcerpc_pipe_connect_b_send(c, epmapper_binding, &ndr_table_epmapper,
+	pipe_connect_req = dcerpc_pipe_connect_b_send(c, epmapper_binding, 
+						      &ndr_table_epmapper,
 						      anon_creds, c->event_ctx);
 	if (composite_nomem(pipe_connect_req, c)) return c;
 	



More information about the samba-cvs mailing list