libcli/smb: pass smbXcli_tcon to smb2cli_read*()
authorStefan Metzmacher <metze@samba.org>
Mon, 23 Jul 2012 20:32:49 +0000 (22:32 +0200)
committerStefan Metzmacher <metze@samba.org>
Tue, 24 Jul 2012 20:20:06 +0000 (22:20 +0200)
metze

libcli/smb/smb2cli_read.c
libcli/smb/smbXcli_base.h
source3/libsmb/cli_np_tstream.c
source3/torture/test_smb2.c

index 29b9f378e676443b356b44fb7c9374a004649fe4..5ff4b6443da97b76d0bb1deb7856a724e05c54d3 100644 (file)
@@ -38,7 +38,7 @@ struct tevent_req *smb2cli_read_send(TALLOC_CTX *mem_ctx,
                                     struct smbXcli_conn *conn,
                                     uint32_t timeout_msec,
                                     struct smbXcli_session *session,
-                                    uint32_t tcon_id,
+                                    struct smbXcli_tcon *tcon,
                                     uint32_t length,
                                     uint64_t offset,
                                     uint64_t fid_persistent,
@@ -49,6 +49,7 @@ struct tevent_req *smb2cli_read_send(TALLOC_CTX *mem_ctx,
        struct tevent_req *req, *subreq;
        struct smb2cli_read_state *state;
        uint8_t *fixed;
+       uint32_t tcon_id = 0;
 
        req = tevent_req_create(mem_ctx, &state,
                                struct smb2cli_read_state);
@@ -66,6 +67,10 @@ struct tevent_req *smb2cli_read_send(TALLOC_CTX *mem_ctx,
        SBVAL(fixed, 32, minimum_count);
        SBVAL(fixed, 40, remaining_bytes);
 
+       if (tcon) {
+               tcon_id = smb2cli_tcon_current_id(tcon);
+       }
+
        subreq = smb2cli_req_send(state, ev, conn, SMB2_OP_READ,
                                  0, 0, /* flags */
                                  timeout_msec,
@@ -142,7 +147,7 @@ NTSTATUS smb2cli_read_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx,
 NTSTATUS smb2cli_read(struct smbXcli_conn *conn,
                      uint32_t timeout_msec,
                      struct smbXcli_session *session,
-                     uint32_t tcon_id,
+                     struct smbXcli_tcon *tcon,
                      uint32_t length,
                      uint64_t offset,
                      uint64_t fid_persistent,
@@ -170,7 +175,7 @@ NTSTATUS smb2cli_read(struct smbXcli_conn *conn,
                goto fail;
        }
        req = smb2cli_read_send(frame, ev,
-                               conn, timeout_msec, session, tcon_id,
+                               conn, timeout_msec, session, tcon,
                                length, offset,
                                fid_persistent, fid_volatile,
                                minimum_count, remaining_bytes);
index b433c4e769bdb616c637cc0d3fcede539ada72da..7aefffc85d185813fd48df9f996e19bab5973e46 100644 (file)
@@ -374,7 +374,7 @@ struct tevent_req *smb2cli_read_send(TALLOC_CTX *mem_ctx,
                                     struct smbXcli_conn *conn,
                                     uint32_t timeout_msec,
                                     struct smbXcli_session *session,
-                                    uint32_t tcon_id,
+                                    struct smbXcli_tcon *tcon,
                                     uint32_t length,
                                     uint64_t offset,
                                     uint64_t fid_persistent,
@@ -386,7 +386,7 @@ NTSTATUS smb2cli_read_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx,
 NTSTATUS smb2cli_read(struct smbXcli_conn *conn,
                      uint32_t timeout_msec,
                      struct smbXcli_session *session,
-                     uint32_t tcon_id,
+                     struct smbXcli_tcon *tcon,
                      uint32_t length,
                      uint64_t offset,
                      uint64_t fid_persistent,
index 47333868dc32f3a2b6983639580df80515e0876d..2ec33d5ac44ee28255297a2f55010a414eb66e9d 100644 (file)
@@ -773,7 +773,7 @@ static void tstream_cli_np_readv_read_next(struct tevent_req *req)
                                           cli_nps->cli->conn,
                                           cli_nps->cli->timeout,
                                           cli_nps->cli->smb2.session,
-                                          cli_nps->cli->smb2.tid,
+                                          cli_nps->cli->smb2.tcon,
                                           TSTREAM_CLI_NP_MAX_BUF_SIZE, /* length */
                                           0, /* offset */
                                           cli_nps->fid_persistent,
index a4655dc05d8605df4a53071305e4cd36b35f440c..ba5cb8ffba47ad518510e46f6f95d94523202f93 100644 (file)
@@ -105,7 +105,7 @@ bool run_smb2_basic(int dummy)
        }
 
        status = smb2cli_read(cli->conn, cli->timeout, cli->smb2.session,
-                             cli->smb2.tid, 0x10000, 0, fid_persistent,
+                             cli->smb2.tcon, 0x10000, 0, fid_persistent,
                              fid_volatile, 2, 0,
                              talloc_tos(), &result, &nread);
        if (!NT_STATUS_IS_OK(status)) {
@@ -355,7 +355,7 @@ bool run_smb2_session_reconnect(int dummy)
        }
 
        status = smb2cli_read(cli1->conn, cli1->timeout, cli1->smb2.session,
-                             cli1->smb2.tid, 0x10000, 0, fid_persistent,
+                             cli1->smb2.tcon, 0x10000, 0, fid_persistent,
                              fid_volatile, 2, 0,
                              talloc_tos(), &result, &nread);
        if (!NT_STATUS_IS_OK(status)) {
@@ -547,7 +547,7 @@ bool run_smb2_session_reconnect(int dummy)
        }
 
        status = smb2cli_read(cli2->conn, cli2->timeout, cli2->smb2.session,
-                             cli2->smb2.tid, 0x10000, 0, fid_persistent,
+                             cli2->smb2.tcon, 0x10000, 0, fid_persistent,
                              fid_volatile, 2, 0,
                              talloc_tos(), &result, &nread);
        if (!NT_STATUS_EQUAL(status, NT_STATUS_FILE_CLOSED) &&
@@ -609,7 +609,7 @@ bool run_smb2_session_reconnect(int dummy)
        }
 
        status = smb2cli_read(cli2->conn, cli2->timeout, cli2->smb2.session,
-                             cli2->smb2.tid, 0x10000, 0, fid_persistent,
+                             cli2->smb2.tcon, 0x10000, 0, fid_persistent,
                              fid_volatile, 2, 0,
                              talloc_tos(), &result, &nread);
        if (!NT_STATUS_EQUAL(status, NT_STATUS_FILE_CLOSED) &&
@@ -679,7 +679,7 @@ bool run_smb2_session_reconnect(int dummy)
        }
 
        status = smb2cli_read(cli2->conn, cli2->timeout, cli2->smb2.session,
-                             cli2->smb2.tid, 0x10000, 0, fid_persistent,
+                             cli2->smb2.tcon, 0x10000, 0, fid_persistent,
                              fid_volatile, 2, 0,
                              talloc_tos(), &result, &nread);
        if (!NT_STATUS_IS_OK(status)) {
@@ -710,6 +710,8 @@ bool run_smb2_tcon_dependence(int dummy)
        const char *hello = "Hello, world\n";
        uint8_t *result;
        uint32_t nread;
+       struct smbXcli_tcon *tcon2;
+       uint32_t tcon2_id;
 
        printf("Starting SMB2-TCON-DEPENDENCE\n");
 
@@ -773,7 +775,7 @@ bool run_smb2_tcon_dependence(int dummy)
        }
 
        status = smb2cli_read(cli->conn, cli->timeout, cli->smb2.session,
-                             cli->smb2.tid, 0x10000, 0, fid_persistent,
+                             cli->smb2.tcon, 0x10000, 0, fid_persistent,
                              fid_volatile, 2, 0,
                              talloc_tos(), &result, &nread);
        if (!NT_STATUS_IS_OK(status)) {
@@ -795,10 +797,18 @@ bool run_smb2_tcon_dependence(int dummy)
 
        /* check behaviour with wrong tid... */
 
-       cli->smb2.tid++;
+       tcon2 = smbXcli_tcon_create(cli);
+       tcon2_id = smb2cli_tcon_current_id(cli->smb2.tcon);
+       tcon2_id++;
+       smb2cli_tcon_set_values(tcon2,
+                               tcon2_id,
+                               0, /* type */
+                               0, /* flags */
+                               0, /* capabilities */
+                               0  /* maximal_access */);
 
        status = smb2cli_read(cli->conn, cli->timeout, cli->smb2.session,
-                             cli->smb2.tid, 0x10000, 0, fid_persistent,
+                             tcon2, 0x10000, 0, fid_persistent,
                              fid_volatile, 2, 0,
                              talloc_tos(), &result, &nread);
        if (!NT_STATUS_EQUAL(status, NT_STATUS_NETWORK_NAME_DELETED)) {
@@ -806,7 +816,7 @@ bool run_smb2_tcon_dependence(int dummy)
                return false;
        }
 
-       cli->smb2.tid--;
+       talloc_free(tcon2);
 
        return true;
 }
@@ -1192,7 +1202,7 @@ bool run_smb2_multi_channel(int dummy)
        }
 
        status = smb2cli_read(cli2->conn, cli2->timeout, cli2->smb2.session,
-                             cli2->smb2.tid, 0x10000, 0, fid_persistent,
+                             cli2->smb2.tcon, 0x10000, 0, fid_persistent,
                              fid_volatile, 2, 0,
                              talloc_tos(), &result, &nread);
        if (!NT_STATUS_IS_OK(status)) {