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);
