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,
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);
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,
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,
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);
}
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)) {
}
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)) {
}
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) &&
}
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) &&
}
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)) {
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");
}
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)) {
/* 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)) {
return false;
}
- cli->smb2.tid--;
+ talloc_free(tcon2);
return true;
}
}
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)) {