dcerpc_smb: trans->in.max_data should not depend on the smb max size
authorStefan Metzmacher <metze@samba.org>
Mon, 7 Jul 2008 16:01:28 +0000 (18:01 +0200)
committerStefan Metzmacher <metze@samba.org>
Mon, 7 Jul 2008 18:59:13 +0000 (20:59 +0200)
We now support async multi fragment SMBtrans calls.

metze
(This used to be commit 6813e22e9d300696a40993476629227d5cc4d35f)

source4/librpc/rpc/dcerpc_smb.c

index 26fe433b092f93260c6219b63c40b577894984a2..312a44a5f0274e60f38a1d28b5692d4c95a90f09 100644 (file)
@@ -254,6 +254,7 @@ static NTSTATUS smb_send_trans_request(struct dcerpc_connection *c, DATA_BLOB *b
         struct smb_trans2 *trans;
         uint16_t setup[2];
        struct smb_trans_state *state;
+       uint16_t max_data;
 
        state = talloc(smb, struct smb_trans_state);
        if (state == NULL) {
@@ -270,8 +271,14 @@ static NTSTATUS smb_send_trans_request(struct dcerpc_connection *c, DATA_BLOB *b
         setup[0] = TRANSACT_DCERPCCMD;
         setup[1] = smb->fnum;
 
+       if (c->srv_max_xmit_frag > 0) {
+               max_data = MIN(UINT16_MAX, c->srv_max_xmit_frag);
+       } else {
+               max_data = UINT16_MAX;
+       }
+
         trans->in.max_param = 0;
-        trans->in.max_data = smb_raw_max_trans_data(smb->tree, 0);
+        trans->in.max_data = max_data;
         trans->in.max_setup = 0;
         trans->in.setup_count = 2;
         trans->in.flags = 0;