summaryrefslogtreecommitdiff
path: root/source3/libsmb/clitrans.c
diff options
context:
space:
mode:
authorVolker Lendecke <vl@samba.org>2010-08-05 12:48:52 +0200
committerVolker Lendecke <vl@samba.org>2010-08-05 13:57:29 +0200
commit0a224bc77b9bb59c72b9d79d9e8637837ffd878c (patch)
tree85a8f45f87cdce2cabd6ebebdbc4d23762490492 /source3/libsmb/clitrans.c
parenta13b96f04a59ec9be9e72ffab4dc6b3f9e1b4dc3 (diff)
downloadsamba-0a224bc77b9bb59c72b9d79d9e8637837ffd878c.tar.gz
samba-0a224bc77b9bb59c72b9d79d9e8637837ffd878c.tar.bz2
samba-0a224bc77b9bb59c72b9d79d9e8637837ffd878c.zip
s3: Save the received trans2 from the inbuf in cli_trans
Diffstat (limited to 'source3/libsmb/clitrans.c')
-rw-r--r--source3/libsmb/clitrans.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/source3/libsmb/clitrans.c b/source3/libsmb/clitrans.c
index 56580e6a6d..dd0873d824 100644
--- a/source3/libsmb/clitrans.c
+++ b/source3/libsmb/clitrans.c
@@ -720,6 +720,7 @@ struct cli_trans_state {
uint16_t *rsetup;
struct trans_recvblob rparam;
struct trans_recvblob rdata;
+ uint16_t recv_flags2;
TALLOC_CTX *secondary_request_ctx;
@@ -1191,6 +1192,7 @@ static void cli_trans_done(struct tevent_req *subreq)
if ((state->rparam.total == state->rparam.received)
&& (state->rdata.total == state->rdata.received)) {
+ state->recv_flags2 = SVAL(inbuf, smb_flg2);
TALLOC_FREE(subreq);
cli_state_seqnum_remove(state->cli, state->mid);
tevent_req_done(req);
@@ -1212,6 +1214,7 @@ static void cli_trans_done(struct tevent_req *subreq)
}
NTSTATUS cli_trans_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx,
+ uint16_t *recv_flags2,
uint16_t **setup, uint8_t min_setup,
uint8_t *num_setup,
uint8_t **param, uint32_t min_param,
@@ -1233,6 +1236,10 @@ NTSTATUS cli_trans_recv(struct tevent_req *req, TALLOC_CTX *mem_ctx,
return NT_STATUS_INVALID_NETWORK_RESPONSE;
}
+ if (recv_flags2 != NULL) {
+ *recv_flags2 = state->recv_flags2;
+ }
+
if (setup != NULL) {
*setup = talloc_move(mem_ctx, &state->rsetup);
*num_setup = state->num_rsetup;
@@ -1264,6 +1271,7 @@ NTSTATUS cli_trans(TALLOC_CTX *mem_ctx, struct cli_state *cli,
uint16_t *setup, uint8_t num_setup, uint8_t max_setup,
uint8_t *param, uint32_t num_param, uint32_t max_param,
uint8_t *data, uint32_t num_data, uint32_t max_data,
+ uint16_t *recv_flags2,
uint16_t **rsetup, uint8_t min_rsetup, uint8_t *num_rsetup,
uint8_t **rparam, uint32_t min_rparam, uint32_t *num_rparam,
uint8_t **rdata, uint32_t min_rdata, uint32_t *num_rdata)
@@ -1302,7 +1310,8 @@ NTSTATUS cli_trans(TALLOC_CTX *mem_ctx, struct cli_state *cli,
goto fail;
}
- status = cli_trans_recv(req, mem_ctx, rsetup, min_rsetup, num_rsetup,
+ status = cli_trans_recv(req, mem_ctx, recv_flags2,
+ rsetup, min_rsetup, num_rsetup,
rparam, min_rparam, num_rparam,
rdata, min_rdata, num_rdata);
fail: