diff options
Diffstat (limited to 'source3')
-rw-r--r-- | source3/include/client.h | 2 | ||||
-rw-r--r-- | source3/libsmb/cliconnect.c | 11 | ||||
-rw-r--r-- | source3/libsmb/clientgen.c | 2 |
3 files changed, 9 insertions, 6 deletions
diff --git a/source3/include/client.h b/source3/include/client.h index 3701aec554..1e3ab50949 100644 --- a/source3/include/client.h +++ b/source3/include/client.h @@ -70,7 +70,6 @@ struct cli_state { int readbraw_supported; int writebraw_supported; int timeout; /* in milliseconds. */ - size_t max_mux; int initialised; int win95; bool is_guestlogin; @@ -135,6 +134,7 @@ struct cli_state { struct { uint32_t capabilities; uint32_t max_xmit; + uint16_t max_mux; } server; uint32_t capabilities; diff --git a/source3/libsmb/cliconnect.c b/source3/libsmb/cliconnect.c index 1abd76018a..50014f57f7 100644 --- a/source3/libsmb/cliconnect.c +++ b/source3/libsmb/cliconnect.c @@ -2614,6 +2614,7 @@ static void cli_negprot_done(struct tevent_req *subreq) uint32_t client_max_xmit = cli->conn.smb1.client.max_xmit; uint32_t server_max_xmit = 0; uint32_t max_xmit; + uint32_t server_max_mux = 0; enum protocol_types protocol; status = cli_smb_recv(subreq, state, &inbuf, 1, &wct, &vwv, @@ -2656,7 +2657,7 @@ static void cli_negprot_done(struct tevent_req *subreq) /* NT protocol */ cli->sec_mode = CVAL(vwv + 1, 0); - cli->max_mux = SVAL(vwv + 1, 1); + server_max_mux = SVAL(vwv + 1, 1); server_max_xmit = IVAL(vwv + 3, 1); cli->sesskey = IVAL(vwv + 7, 1); cli->serverzone = SVALS(vwv + 15, 1); @@ -2719,7 +2720,7 @@ static void cli_negprot_done(struct tevent_req *subreq) cli->sec_mode = SVAL(vwv + 1, 0); server_max_xmit = SVAL(vwv + 2, 0); - cli->max_mux = SVAL(vwv + 3, 0); + server_max_mux = SVAL(vwv + 3, 0); cli->sesskey = IVAL(vwv + 6, 0); cli->serverzone = SVALS(vwv + 10, 0); cli->serverzone *= 60; @@ -2734,7 +2735,7 @@ static void cli_negprot_done(struct tevent_req *subreq) cli->sec_mode = 0; cli->serverzone = get_time_zone(time(NULL)); server_max_xmit = 1024; - cli->max_mux = 1; + server_max_mux = 1; } if (server_max_xmit < 1024) { @@ -2742,7 +2743,7 @@ static void cli_negprot_done(struct tevent_req *subreq) return; } - if (cli->max_mux < 1) { + if (server_max_mux < 1) { tevent_req_nterror(req, NT_STATUS_INVALID_NETWORK_RESPONSE); return; } @@ -2769,6 +2770,8 @@ static void cli_negprot_done(struct tevent_req *subreq) cli->conn.smb1.server.max_xmit = server_max_xmit; cli->conn.smb1.max_xmit = max_xmit; + cli->conn.smb1.server.max_mux = server_max_mux; + tevent_req_done(req); } diff --git a/source3/libsmb/clientgen.c b/source3/libsmb/clientgen.c index 9091ad38d8..aef31b5aa0 100644 --- a/source3/libsmb/clientgen.c +++ b/source3/libsmb/clientgen.c @@ -563,7 +563,7 @@ uint32_t cli_state_available_size(struct cli_state *cli, uint32_t ofs) uint16_t cli_state_max_requests(struct cli_state *cli) { - return cli->max_mux; + return cli->conn.smb1.server.max_mux; } uint16_t cli_state_security_mode(struct cli_state *cli) |