From cea8f887f7a28c839902b79548bf35515a807db2 Mon Sep 17 00:00:00 2001 From: Ralph Boehme Date: Thu, 8 Dec 2022 18:29:19 +0100 Subject: [PATCH] WIP: smbd: prevent async interim SMB responses for READ and WRITE requests The async interim responses grant the credits of the request which restocks the client's creditting pool, as a result the client can send an uncontrolled amount of IO requests which may overwhelm the server is the client is faster sending requests that what can be processed by the server. According to some initial research and some simple testing, Windows also doesn't generate interim responses for READ and WRITE. --- source3/smbd/smb2_read.c | 2 +- source3/smbd/smb2_write.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/source3/smbd/smb2_read.c b/source3/smbd/smb2_read.c index a846215b0eca..51d7292575f7 100644 --- a/source3/smbd/smb2_read.c +++ b/source3/smbd/smb2_read.c @@ -109,7 +109,7 @@ NTSTATUS smbd_smb2_request_process_read(struct smbd_smb2_request *req) } tevent_req_set_callback(subreq, smbd_smb2_request_read_done, req); - return smbd_smb2_request_pending_queue(req, subreq, 500); + return smbd_smb2_request_pending_queue(req, subreq, 0); } static void smbd_smb2_request_read_done(struct tevent_req *subreq) diff --git a/source3/smbd/smb2_write.c b/source3/smbd/smb2_write.c index e49e623d7968..2b2dfa1d08ec 100644 --- a/source3/smbd/smb2_write.c +++ b/source3/smbd/smb2_write.c @@ -119,7 +119,7 @@ NTSTATUS smbd_smb2_request_process_write(struct smbd_smb2_request *req) } tevent_req_set_callback(subreq, smbd_smb2_request_write_done, req); - return smbd_smb2_request_pending_queue(req, subreq, 500); + return smbd_smb2_request_pending_queue(req, subreq, 0); } static void smbd_smb2_request_write_done(struct tevent_req *subreq) -- 2.38.1