From 3f8ca83d3f1d2a3331335830c666fdf6e0db3c11 Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Wed, 16 Jan 2019 12:24:04 +0100 Subject: [PATCH] smb2_server: grant all 8192 credits to clients This seems to match Windows Server 2016. BUG: https://bugzilla.samba.org/show_bug.cgi?id=13863 Signed-off-by: Stefan Metzmacher Reviewed-by: Ralph Boehme Reviewed-by: Jeremy Allison (cherry picked from commit 829f692fb1552e56c6a9726036a995b4328731dd) --- selftest/knownfail | 3 --- source3/smbd/smb2_server.c | 17 ++++++++++++----- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/selftest/knownfail b/selftest/knownfail index 84776d4f35d0..a2fcbc4b2c61 100644 --- a/selftest/knownfail +++ b/selftest/knownfail @@ -326,9 +326,6 @@ ^samba.tests.dcerpc.dnsserver.samba.tests.dcerpc.dnsserver.DnsserverTests.test_add_duplicate_different_type.* ^samba.tests.dcerpc.dnsserver.samba.tests.dcerpc.dnsserver.DnsserverTests.test_rank_none.* ^samba.tests.dcerpc.dnsserver.samba.tests.dcerpc.dnsserver.DnsserverTests.test_security_descriptor.* -^samba3.smb2.credits.session_setup_credits_granted.* -^samba3.smb2.credits.single_req_credits_granted.* -^samba3.smb2.credits.skipped_mid.* ^samba4.blackbox.dbcheck-links.release-4-5-0-pre1.dbcheck_dangling_multi_valued_clean ^samba4.blackbox.dbcheck-links.release-4-5-0-pre1.dangling_multi_valued_check_missing # diff --git a/source3/smbd/smb2_server.c b/source3/smbd/smb2_server.c index 0b80da346513..4fb9e4f0aeec 100644 --- a/source3/smbd/smb2_server.c +++ b/source3/smbd/smb2_server.c @@ -828,8 +828,11 @@ static void smb2_set_operation_credit(struct smbXsrv_connection *xconn, * of requests and the used sequence number. * Which means we would grant more credits * for client which use multi credit requests. + * + * The above is what Windows Server < 2016 is doing, + * but new servers use all credits (8192 by default). */ - current_max_credits = xconn->smb2.credits.max / 16; + current_max_credits = xconn->smb2.credits.max; current_max_credits = MAX(current_max_credits, 1); if (xconn->smb2.credits.multicredit) { @@ -874,15 +877,19 @@ static void smb2_set_operation_credit(struct smbXsrv_connection *xconn, * with a successful session setup */ if (NT_STATUS_IS_OK(out_status)) { - additional_max = 32; + additional_max = xconn->smb2.credits.max; } break; default: /* - * We match windows and only grant additional credits - * in chunks of 32. + * Windows Server < 2016 and older Samba versions + * used to only grant additional credits in + * chunks of 32 credits. + * + * But we match Windows Server 2016 and grant + * all credits as requested. */ - additional_max = 32; + additional_max = xconn->smb2.credits.max; break; } -- 2.17.1