From 398ef0fb855b3b2d6e55ae26304589fd89110628 Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Fri, 19 Dec 2008 16:11:14 +0100 Subject: For large smbwrite&x, we need more than 64k bcc --- source3/include/async_smb.h | 4 ++-- source3/libsmb/async_smb.c | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/source3/include/async_smb.h b/source3/include/async_smb.h index fd0b0d2c53..f8f94aa4c9 100644 --- a/source3/include/async_smb.h +++ b/source3/include/async_smb.h @@ -120,7 +120,7 @@ struct async_req *cli_request_send(TALLOC_CTX *mem_ctx, uint8_t additional_flags, uint8_t wct, const uint16_t *vwv, size_t bytes_alignment, - uint16_t num_bytes, const uint8_t *bytes); + uint32_t num_bytes, const uint8_t *bytes); bool cli_chain_cork(struct cli_state *cli, struct event_context *ev, size_t size_hint); @@ -129,7 +129,7 @@ bool cli_in_chain(struct cli_state *cli); bool smb_splice_chain(char **poutbuf, uint8_t smb_command, uint8_t wct, const uint16_t *vwv, size_t bytes_alignment, - uint16_t num_bytes, const uint8_t *bytes); + uint32_t num_bytes, const uint8_t *bytes); NTSTATUS cli_pull_reply(struct async_req *req, uint8_t *pwct, uint16_t **pvwv, diff --git a/source3/libsmb/async_smb.c b/source3/libsmb/async_smb.c index 3b7442a680..a5ce505908 100644 --- a/source3/libsmb/async_smb.c +++ b/source3/libsmb/async_smb.c @@ -234,7 +234,7 @@ static bool find_andx_cmd_ofs(char *buf, size_t *pofs) bool smb_splice_chain(char **poutbuf, uint8_t smb_command, uint8_t wct, const uint16_t *vwv, size_t bytes_alignment, - uint16_t num_bytes, const uint8_t *bytes) + uint32_t num_bytes, const uint8_t *bytes) { char *outbuf; size_t old_size, new_size; @@ -274,7 +274,7 @@ bool smb_splice_chain(char **poutbuf, uint8_t smb_command, new_size += bytes_padding + num_bytes; - if (new_size > 0xffff) { + if ((smb_command != SMBwriteX) && (new_size > 0xffff)) { DEBUG(1, ("splice_chain: %u bytes won't fit\n", (unsigned)new_size)); return false; @@ -417,7 +417,7 @@ static struct async_req *cli_request_chain(TALLOC_CTX *mem_ctx, uint8_t additional_flags, uint8_t wct, const uint16_t *vwv, size_t bytes_alignment, - uint16_t num_bytes, + uint32_t num_bytes, const uint8_t *bytes) { struct async_req **tmp_reqs; @@ -606,7 +606,7 @@ struct async_req *cli_request_send(TALLOC_CTX *mem_ctx, uint8_t additional_flags, uint8_t wct, const uint16_t *vwv, size_t bytes_alignment, - uint16_t num_bytes, const uint8_t *bytes) + uint32_t num_bytes, const uint8_t *bytes) { struct async_req *result; bool uncork = false; -- cgit