s3/libsmb: Generalise cli_state in smb2 write calls
authorLuk Claes <luk@debian.org>
Thu, 10 May 2012 16:40:56 +0000 (18:40 +0200)
committerStefan Metzmacher <metze@samba.org>
Fri, 11 May 2012 23:01:31 +0000 (01:01 +0200)
Signed-off-by: Luk Claes <luk@debian.org>
Signed-off-by: Stefan Metzmacher <metze@samba.org>
source3/libsmb/cli_np_tstream.c
source3/libsmb/smb2cli.h
source3/libsmb/smb2cli_write.c
source3/torture/test_smb2.c

index 9bf5611d964a1f5acf65192410a5f2d711ba7f09..53e0c41d8cbc5f4d49ae5539f5634bbdc8e1064d 100644 (file)
@@ -473,14 +473,18 @@ static void tstream_cli_np_writev_write_next(struct tevent_req *req)
                                             0, /* offset */
                                             cli_nps->write.ofs); /* size */
        } else {
-               subreq = smb2cli_write_send(state, state->ev, cli_nps->cli,
-                                            cli_nps->write.ofs, /* length */
-                                            0, /* offset */
-                                            cli_nps->fid_persistent,
-                                            cli_nps->fid_volatile,
-                                            0, /* remaining_bytes */
-                                            0, /* flags */
-                                            cli_nps->write.buf);
+               subreq = smb2cli_write_send(state, state->ev,
+                                           cli_nps->cli->conn,
+                                           cli_nps->cli->timeout,
+                                           cli_nps->cli->smb2.session,
+                                           cli_nps->cli->smb2.tid,
+                                           cli_nps->write.ofs, /* length */
+                                           0, /* offset */
+                                           cli_nps->fid_persistent,
+                                           cli_nps->fid_volatile,
+                                           0, /* remaining_bytes */
+                                           0, /* flags */
+                                           cli_nps->write.buf);
        }
        if (tevent_req_nomem(subreq, req)) {
                return;
index e5629453585977952f32d9d44b0d0c02851cf27c..6fa77f4ff3cdb5351a281c84b6621c51989b0a63 100644 (file)
@@ -142,7 +142,10 @@ NTSTATUS smb2cli_read(struct smbXcli_conn *conn,
 
 struct tevent_req *smb2cli_write_send(TALLOC_CTX *mem_ctx,
                                      struct tevent_context *ev,
-                                     struct cli_state *cli,
+                                     struct smbXcli_conn *conn,
+                                     uint32_t timeout_msec,
+                                     struct smbXcli_session *session,
+                                     uint32_t tcon_id,
                                      uint32_t length,
                                      uint64_t offset,
                                      uint64_t fid_persistent,
@@ -151,7 +154,10 @@ struct tevent_req *smb2cli_write_send(TALLOC_CTX *mem_ctx,
                                      uint32_t flags,
                                      const uint8_t *data);
 NTSTATUS smb2cli_write_recv(struct tevent_req *req);
-NTSTATUS smb2cli_write(struct cli_state *cli,
+NTSTATUS smb2cli_write(struct smbXcli_conn *conn,
+                      uint32_t timeout_msec,
+                      struct smbXcli_session *session,
+                      uint32_t tcon_id,
                       uint32_t length,
                       uint64_t offset,
                       uint64_t fid_persistent,
index 3d7b667a5050a464ebc1d60cc62d0b3ea269c716..e257b588be6df1eec062b604874928e7131a2a24 100644 (file)
@@ -34,7 +34,10 @@ static void smb2cli_write_done(struct tevent_req *subreq);
 
 struct tevent_req *smb2cli_write_send(TALLOC_CTX *mem_ctx,
                                      struct tevent_context *ev,
-                                     struct cli_state *cli,
+                                     struct smbXcli_conn *conn,
+                                     uint32_t timeout_msec,
+                                     struct smbXcli_session *session,
+                                     uint32_t tcon_id,
                                      uint32_t length,
                                      uint64_t offset,
                                      uint64_t fid_persistent,
@@ -74,12 +77,12 @@ struct tevent_req *smb2cli_write_send(TALLOC_CTX *mem_ctx,
                dyn_len = sizeof(state->dyn_pad);
        }
 
-       subreq = smb2cli_req_send(state, ev, cli->conn, SMB2_OP_WRITE,
+       subreq = smb2cli_req_send(state, ev, conn, SMB2_OP_WRITE,
                                  0, 0, /* flags */
-                                 cli->timeout,
-                                 cli->smb2.pid,
-                                 cli->smb2.tid,
-                                 cli->smb2.session,
+                                 timeout_msec,
+                                 0xFEFF, /* pid */
+                                 tcon_id,
+                                 session,
                                  state->fixed, sizeof(state->fixed),
                                  dyn, dyn_len);
        if (tevent_req_nomem(subreq, req)) {
@@ -115,7 +118,10 @@ NTSTATUS smb2cli_write_recv(struct tevent_req *req)
        return tevent_req_simple_recv_ntstatus(req);
 }
 
-NTSTATUS smb2cli_write(struct cli_state *cli,
+NTSTATUS smb2cli_write(struct smbXcli_conn *conn,
+                      uint32_t timeout_msec,
+                      struct smbXcli_session *session,
+                      uint32_t tcon_id,
                       uint32_t length,
                       uint64_t offset,
                       uint64_t fid_persistent,
@@ -129,7 +135,7 @@ NTSTATUS smb2cli_write(struct cli_state *cli,
        struct tevent_req *req;
        NTSTATUS status = NT_STATUS_NO_MEMORY;
 
-       if (cli_has_async_calls(cli)) {
+       if (smbXcli_conn_has_async_calls(conn)) {
                /*
                 * Can't use sync call while an async call is in flight
                 */
@@ -140,7 +146,8 @@ NTSTATUS smb2cli_write(struct cli_state *cli,
        if (ev == NULL) {
                goto fail;
        }
-       req = smb2cli_write_send(frame, ev, cli, length, offset,
+       req = smb2cli_write_send(frame, ev, conn, timeout_msec, session,
+                                tcon_id, length, offset,
                                 fid_persistent, fid_volatile,
                                 remaining_bytes, flags, data);
        if (req == NULL) {
index 8ce0ad84e73262cd32ed0f518796dd01a414b3c3..12f32aa07f09ec9d19f07e1d3c93401fed9c4ede 100644 (file)
@@ -89,7 +89,8 @@ bool run_smb2_basic(int dummy)
                return false;
        }
 
-       status = smb2cli_write(cli, strlen(hello), 0, fid_persistent,
+       status = smb2cli_write(cli->conn, cli->timeout, cli->smb2.session,
+                              cli->smb2.tid, strlen(hello), 0, fid_persistent,
                               fid_volatile, 0, 0, (const uint8_t *)hello);
        if (!NT_STATUS_IS_OK(status)) {
                printf("smb2cli_write returned %s\n", nt_errstr(status));
@@ -338,7 +339,8 @@ bool run_smb2_session_reconnect(int dummy)
                return false;
        }
 
-       status = smb2cli_write(cli1, strlen(hello), 0, fid_persistent,
+       status = smb2cli_write(cli1->conn, cli1->timeout, cli1->smb2.session,
+                              cli1->smb2.tid, strlen(hello), 0, fid_persistent,
                               fid_volatile, 0, 0, (const uint8_t *)hello);
        if (!NT_STATUS_IS_OK(status)) {
                printf("smb2cli_write returned %s\n", nt_errstr(status));
@@ -532,7 +534,8 @@ bool run_smb2_session_reconnect(int dummy)
                return false;
        }
 
-       status = smb2cli_write(cli2, strlen(hello), 0, fid_persistent,
+       status = smb2cli_write(cli2->conn, cli2->timeout, cli2->smb2.session,
+                              cli2->smb2.tid, strlen(hello), 0, fid_persistent,
                               fid_volatile, 0, 0, (const uint8_t *)hello);
        if (!NT_STATUS_EQUAL(status, NT_STATUS_FILE_CLOSED)) {
                printf("smb2cli_write returned %s\n", nt_errstr(status));
@@ -587,7 +590,8 @@ bool run_smb2_session_reconnect(int dummy)
                return false;
        }
 
-       status = smb2cli_write(cli2, strlen(hello), 0, fid_persistent,
+       status = smb2cli_write(cli2->conn, cli2->timeout, cli2->smb2.session,
+                              cli2->smb2.tid, strlen(hello), 0, fid_persistent,
                               fid_volatile, 0, 0, (const uint8_t *)hello);
        if (!NT_STATUS_EQUAL(status, NT_STATUS_FILE_CLOSED)) {
                printf("smb2cli_write returned %s\n", nt_errstr(status));
@@ -645,7 +649,8 @@ bool run_smb2_session_reconnect(int dummy)
                return false;
        }
 
-       status = smb2cli_write(cli2, strlen(hello), 0, fid_persistent,
+       status = smb2cli_write(cli2->conn, cli2->timeout, cli2->smb2.session,
+                              cli2->smb2.tid, strlen(hello), 0, fid_persistent,
                               fid_volatile, 0, 0, (const uint8_t *)hello);
        if (!NT_STATUS_IS_OK(status)) {
                printf("smb2cli_write returned %s\n", nt_errstr(status));
@@ -738,7 +743,8 @@ bool run_smb2_tcon_dependence(int dummy)
                return false;
        }
 
-       status = smb2cli_write(cli, strlen(hello), 0, fid_persistent,
+       status = smb2cli_write(cli->conn, cli->timeout, cli->smb2.session,
+                              cli->smb2.tid, strlen(hello), 0, fid_persistent,
                               fid_volatile, 0, 0, (const uint8_t *)hello);
        if (!NT_STATUS_IS_OK(status)) {
                printf("smb2cli_write returned %s\n", nt_errstr(status));
@@ -1142,7 +1148,8 @@ bool run_smb2_multi_channel(int dummy)
                return false;
        }
 
-       status = smb2cli_write(cli1, strlen(hello), 0, fid_persistent,
+       status = smb2cli_write(cli1->conn, cli1->timeout, cli1->smb2.session,
+                              cli1->smb2.tid, strlen(hello), 0, fid_persistent,
                               fid_volatile, 0, 0, (const uint8_t *)hello);
        if (!NT_STATUS_IS_OK(status)) {
                printf("smb2cli_write returned %s\n", nt_errstr(status));