Author: mimir
Date: 2005-12-01 22:43:30 +0000 (Thu, 01 Dec 2005)
New Revision: 12001

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

Log:
Replace smbcli_full_connection call with composite connect used
in sync version. This step makes it easer to move further to async
dcerpc connect routine.


rafal


Modified:
   branches/SAMBA_4_0/source/librpc/rpc/dcerpc_util.c


Changeset:
Modified: branches/SAMBA_4_0/source/librpc/rpc/dcerpc_util.c
===================================================================
--- branches/SAMBA_4_0/source/librpc/rpc/dcerpc_util.c  2005-12-01 22:18:34 UTC 
(rev 12000)
+++ branches/SAMBA_4_0/source/librpc/rpc/dcerpc_util.c  2005-12-01 22:43:30 UTC 
(rev 12001)
@@ -27,6 +27,8 @@
 #include "librpc/gen_ndr/ndr_epmapper.h"
 #include "librpc/gen_ndr/ndr_dcerpc.h"
 #include "librpc/gen_ndr/ndr_misc.h"
+#include "libcli/raw/libcliraw.h"
+#include "libcli/smb_composite/smb_composite.h"
 
 /*
   find the pipe name for a local IDL interface
@@ -1023,29 +1025,44 @@
                                                 struct cli_credentials 
*credentials)
 {
        NTSTATUS status;
+       struct smb_composite_connect conn;
        struct smbcli_state *cli;
        const char *pipe_name = NULL;
 
+       conn.in.dest_host              = binding->host;
+       conn.in.port                   = 0;
+       conn.in.called_name            = strupper_talloc(tmp_ctx, 
binding->host);
+       conn.in.service                = "IPC$";
+       conn.in.service_type           = NULL;
+       conn.in.fallback_to_anonymous  = False;
+       conn.in.workgroup              = lp_workgroup();
+
        if (binding->flags & DCERPC_SCHANNEL) {
                struct cli_credentials *anon_creds
                        = cli_credentials_init(tmp_ctx);
                cli_credentials_set_anonymous(anon_creds);
                cli_credentials_guess(anon_creds);
-               status = smbcli_full_connection(p->conn, &cli, 
-                                               binding->host, 
-                                               "IPC$", NULL, 
-                                               anon_creds, p->conn->event_ctx);
+
+               conn.in.credentials = anon_creds;
+               status = smb_composite_connect(&conn, p->conn, 
p->conn->event_ctx);
+
        } else {
-               status = smbcli_full_connection(p->conn, &cli, 
-                                               binding->host, 
-                                               "IPC$", NULL,
-                                               credentials, 
p->conn->event_ctx);
+
+               conn.in.credentials = credentials;
+               status = smb_composite_connect(&conn, p->conn, 
p->conn->event_ctx);
+
        }
+
        if (!NT_STATUS_IS_OK(status)) {
                DEBUG(0,("Failed to connect to %s - %s\n", binding->host, 
nt_errstr(status)));
                return status;
        }
 
+       cli = smbcli_state_init(p->conn);
+       cli->tree      = conn.out.tree;
+       cli->session   = conn.out.tree->session;
+       cli->transport = conn.out.tree->session->transport;
+
        pipe_name = binding->endpoint;
 
        status = dcerpc_pipe_open_smb(p->conn, cli->tree, pipe_name);

Reply via email to