s3:libsmb: use cli_state_{g,s}et_uid instead of smb1.uid directly
[mat/samba.git] / source3 / libsmb / clientgen.c
index 20f9afdfa024ba7f825fe82151dcb29af8b86d63..dcb84673394e713eca081872d604c9af981b33ab 100644 (file)
@@ -64,15 +64,6 @@ bool cli_set_backup_intent(struct cli_state *cli, bool flag)
        return old_state;
 }
 
-/****************************************************************************
- convenience routine to find if we negotiated ucs2
-****************************************************************************/
-
-bool cli_ucs2(struct cli_state *cli)
-{
-       return smbXcli_conn_use_unicode(cli->conn);
-}
-
 /****************************************************************************
  Initialize Domain, user or password.
 ****************************************************************************/
@@ -218,6 +209,10 @@ struct cli_state *cli_state_create(TALLOC_CTX *mem_ctx,
                cli->use_ccache = true;
        }
 
+       if (flags & CLI_FULL_CONNECTION_USE_NT_HASH) {
+               cli->pw_nt_hash = true;
+       }
+
        if (flags & CLI_FULL_CONNECTION_OPLOCKS) {
                cli->use_oplocks = true;
        }
@@ -274,7 +269,10 @@ struct cli_state *cli_state_create(TALLOC_CTX *mem_ctx,
        cli->smb1.pid = (uint16_t)getpid();
        cli->smb1.vc_num = cli->smb1.pid;
        cli->smb1.tid = UINT16_MAX;
-       cli->smb1.uid = UID_FIELD_INVALID;
+       cli->smb1.session = smbXcli_session_create(cli, cli->conn);
+       if (cli->smb1.session == NULL) {
+               goto error;
+       }
 
        cli->initialised = 1;
        return cli;
@@ -323,7 +321,7 @@ static void _cli_shutdown(struct cli_state *cli)
         
        data_blob_free(&cli->user_session_key);
 
-       cli_state_disconnect(cli);
+       smbXcli_conn_disconnect(cli->conn, NT_STATUS_OK);
 
        TALLOC_FREE(cli);
 }
@@ -403,13 +401,13 @@ uint16_t cli_state_set_tid(struct cli_state *cli, uint16_t tid)
 
 uint16_t cli_state_get_uid(struct cli_state *cli)
 {
-       return cli->smb1.uid;
+       return smb1cli_session_current_id(cli->smb1.session);
 }
 
 uint16_t cli_state_set_uid(struct cli_state *cli, uint16_t uid)
 {
-       uint16_t ret = cli->smb1.uid;
-       cli->smb1.uid = uid;
+       uint16_t ret = smb1cli_session_current_id(cli->smb1.session);
+       smb1cli_session_set_id(cli->smb1.session, uid);
        return ret;
 }
 
@@ -492,9 +490,8 @@ static void cli_echo_done(struct tevent_req *subreq)
        NTSTATUS status;
        uint32_t num_bytes;
        uint8_t *bytes;
-       uint8_t *inbuf;
 
-       status = cli_smb_recv(subreq, state, &inbuf, 0, NULL, NULL,
+       status = cli_smb_recv(subreq, state, NULL, 0, NULL, NULL,
                              &num_bytes, &bytes);
        if (!NT_STATUS_IS_OK(status)) {
                tevent_req_nterror(req, status);
@@ -546,7 +543,7 @@ NTSTATUS cli_echo(struct cli_state *cli, uint16_t num_echos, DATA_BLOB data)
        struct tevent_req *req;
        NTSTATUS status = NT_STATUS_OK;
 
-       if (cli_has_async_calls(cli)) {
+       if (smbXcli_conn_has_async_calls(cli->conn)) {
                /*
                 * Can't use sync call while an async call is in flight
                 */
@@ -614,7 +611,7 @@ NTSTATUS cli_smb(TALLOC_CTX *mem_ctx, struct cli_state *cli,
         struct tevent_req *req = NULL;
         NTSTATUS status = NT_STATUS_NO_MEMORY;
 
-        if (cli_has_async_calls(cli)) {
+        if (smbXcli_conn_has_async_calls(cli->conn)) {
                 return NT_STATUS_INVALID_PARAMETER;
         }
         ev = tevent_context_init(mem_ctx);