r2371: Fix for talking to OS/2 clients (max_mux ignored) by Guenter Kukkukk <guenter...
authorJeremy Allison <jra@samba.org>
Fri, 17 Sep 2004 00:49:41 +0000 (00:49 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 15:52:41 +0000 (10:52 -0500)
Bugid #1590.
Jeremy.
(This used to be commit 330025d1a669de927a3879a9c3a9fc20e1be464f)

source3/libsmb/cliconnect.c
source3/libsmb/clireadwrite.c

index 559538aac9bb60cf9763e2feb2ef4a33751c4e4c..98656c119d35649dd4250e95d4ff4458eb2e1080 100644 (file)
@@ -1133,6 +1133,7 @@ BOOL cli_negprot(struct cli_state *cli)
                cli->use_spnego = False;
                cli->sec_mode = SVAL(cli->inbuf,smb_vwv1);
                cli->max_xmit = SVAL(cli->inbuf,smb_vwv2);
+               cli->max_mux = SVAL(cli->inbuf, smb_vwv3); 
                cli->sesskey = IVAL(cli->inbuf,smb_vwv6);
                cli->serverzone = SVALS(cli->inbuf,smb_vwv10);
                cli->serverzone *= 60;
index 8eac7d07d8be3bdac338be38d1e1b5e4ae430620..60ac89aeb2ad4b5a1ee37677424fa00afd20a078 100644 (file)
@@ -325,10 +325,16 @@ ssize_t cli_write(struct cli_state *cli,
        int bwritten = 0;
        int issued = 0;
        int received = 0;
-       int mpx = MAX(cli->max_mux-1, 1);
+       int mpx = 1;
        int block = cli->max_xmit - (smb_size+32);
        int blocks = (size + (block-1)) / block;
 
+       if(cli->max_mux == 0) {
+               mpx = 1;
+       } else {
+               mpx = cli->max_mux-1;
+       }
+
        while (received < blocks) {
 
                while ((issued - received < mpx) && (issued < blocks)) {