diff options
author | Volker Lendecke <vlendec@samba.org> | 2005-01-06 15:35:02 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 10:53:47 -0500 |
commit | c85d9e735c8294088203f1656ae07a4b0835292c (patch) | |
tree | b425600689792bcee9fe21e46f2aa8dfdb0eb291 /source3/rpcclient | |
parent | f4ec52a0978dca900942e6001947e3b3d58eccd2 (diff) | |
download | samba-c85d9e735c8294088203f1656ae07a4b0835292c.tar.gz samba-c85d9e735c8294088203f1656ae07a4b0835292c.tar.bz2 samba-c85d9e735c8294088203f1656ae07a4b0835292c.zip |
r4570: Replace cli->nt_pipe_fnum with an array of NT file numbers, one for each
supported pipe. Netlogon is still special, as we open that twice, one to do
the auth2, the other one with schannel.
The client interface is completely unchanged for those who only use a single
pie. cli->pipe_idx is used as the index for everything except the "real"
client rpc calls, which have been explicitly converted in my last commit. Next
step is to get winbind to just use a single smb connection for multiple pipes.
Volker
(This used to be commit dc294c52e0216424236057ca6cd35e1ebf51d0da)
Diffstat (limited to 'source3/rpcclient')
-rw-r--r-- | source3/rpcclient/rpcclient.c | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/source3/rpcclient/rpcclient.c b/source3/rpcclient/rpcclient.c index e003b86e67..4d35b6d8a9 100644 --- a/source3/rpcclient/rpcclient.c +++ b/source3/rpcclient/rpcclient.c @@ -24,6 +24,7 @@ #include "rpcclient.h" DOM_SID domain_sid; +static int pipe_idx; /* List to hold groups of commands. @@ -315,7 +316,7 @@ static NTSTATUS cmd_sign(struct cli_state *cli, TALLOC_CTX *mem_ctx, /* still have session, just need to use it again */ cli->pipe_auth_flags = AUTH_PIPE_NTLMSSP; cli->pipe_auth_flags |= AUTH_PIPE_SIGN; - if (cli->nt_pipe_fnum != 0) + if (cli->nt_pipe_fnum[cli->pipe_idx] != 0) cli_nt_session_close(cli); } @@ -332,7 +333,7 @@ static NTSTATUS cmd_seal(struct cli_state *cli, TALLOC_CTX *mem_ctx, cli->pipe_auth_flags = AUTH_PIPE_NTLMSSP; cli->pipe_auth_flags |= AUTH_PIPE_SIGN; cli->pipe_auth_flags |= AUTH_PIPE_SEAL; - if (cli->nt_pipe_fnum != 0) + if (cli->nt_pipe_fnum[cli->pipe_idx] != 0) cli_nt_session_close(cli); } return NT_STATUS_OK; @@ -346,7 +347,7 @@ static NTSTATUS cmd_none(struct cli_state *cli, TALLOC_CTX *mem_ctx, } else { /* still have session, just need to use it again */ cli->pipe_auth_flags = 0; - if (cli->nt_pipe_fnum != 0) + if (cli->nt_pipe_fnum[cli->pipe_idx] != 0) cli_nt_session_close(cli); } cli->pipe_auth_flags = 0; @@ -381,13 +382,13 @@ static NTSTATUS setup_schannel(struct cli_state *cli, int pipe_auth_flags, /* schannel is setup, just need to use it again with new flags */ cli->pipe_auth_flags = pipe_auth_flags; - if (cli->nt_pipe_fnum != 0) + if (cli->nt_pipe_fnum[cli->pipe_idx] != 0) cli_nt_session_close(cli); return NT_STATUS_OK; } } - if (cli->nt_pipe_fnum != 0) + if (cli->nt_pipe_fnum[cli->pipe_idx] != 0) cli_nt_session_close(cli); if (!secrets_fetch_trust_account_password(lp_workgroup(), @@ -523,7 +524,7 @@ static NTSTATUS do_cmd(struct cli_state *cli, if (cmd_entry->pipe_idx != -1 && cmd_entry->pipe_idx != cli->pipe_idx) { - if (cli->nt_pipe_fnum != 0) + if (cli->nt_pipe_fnum[cli->pipe_idx] != 0) cli_nt_session_close(cli); if (!cli_nt_session_open(cli, cmd_entry->pipe_idx)) { @@ -558,6 +559,7 @@ static NTSTATUS do_cmd(struct cli_state *cli, /* Run command */ + pipe_idx = cmd_entry->pipe_idx; if ( cmd_entry->returntype == RPC_RTYPE_NTSTATUS ) { ntresult = cmd_entry->ntfn(cli, mem_ctx, argc, (const char **) argv); if (!NT_STATUS_IS_OK(ntresult)) { |