diff options
author | Jeremy Allison <jra@samba.org> | 2013-05-08 15:10:32 -0700 |
---|---|---|
committer | Karolin Seeger <kseeger@samba.org> | 2013-06-17 09:20:07 +0200 |
commit | ef94e7c2a58cfa5d54212e99186e5dbc5fe39ddb (patch) | |
tree | 42ffa3de334b25ee31f87d6552d20f6f475bdae6 | |
parent | 07640e4bcc629beac6a30676bd3a0ea984aa2455 (diff) | |
download | samba-ef94e7c2a58cfa5d54212e99186e5dbc5fe39ddb.tar.gz |
Remove the compound_related_in_progress state from the smb2 global state.
And also remove the restriction that we can't read a new
request whilst we're in this state.
Signed-off-by: Jeremy Allison <jra@samba.org>
The last 4 patches address bug #9722 - Samba does not properly handle Oplock
breaks in compound requests.
(cherry picked from commit 9094b538c85a550b40827799f56427a926d315cd)
-rw-r--r-- | source3/smbd/globals.h | 1 | ||||
-rw-r--r-- | source3/smbd/smb2_server.c | 11 |
2 files changed, 0 insertions, 12 deletions
diff --git a/source3/smbd/globals.h b/source3/smbd/globals.h index 730bb7e4ecb..ce5b18dbf9c 100644 --- a/source3/smbd/globals.h +++ b/source3/smbd/globals.h @@ -647,7 +647,6 @@ struct smbd_server_connection { uint32_t max_trans; uint32_t max_read; uint32_t max_write; - bool compound_related_in_progress; } smb2; }; diff --git a/source3/smbd/smb2_server.c b/source3/smbd/smb2_server.c index f1f99663a55..96159074d0a 100644 --- a/source3/smbd/smb2_server.c +++ b/source3/smbd/smb2_server.c @@ -1012,7 +1012,6 @@ NTSTATUS smbd_smb2_request_pending_queue(struct smbd_smb2_request *req, * This is no longer a compound request. */ req->compound_related = false; - req->sconn->smb2.compound_related_in_progress = false; flags = (IVAL(outhdr, SMB2_HDR_FLAGS) & ~SMB2_HDR_FLAG_CHAINED); SIVAL(outhdr, SMB2_HDR_FLAGS, flags); } @@ -1354,7 +1353,6 @@ NTSTATUS smbd_smb2_request_dispatch(struct smbd_smb2_request *req) if (flags & SMB2_HDR_FLAG_CHAINED) { req->compound_related = true; - req->sconn->smb2.compound_related_in_progress = true; } switch (opcode) { @@ -1824,7 +1822,6 @@ static NTSTATUS smbd_smb2_request_reply(struct smbd_smb2_request *req) if (req->compound_related) { req->compound_related = false; - req->sconn->smb2.compound_related_in_progress = false; } smb2_setup_nbt_length(req->out.vector, req->out.vector_count); @@ -2541,14 +2538,6 @@ static NTSTATUS smbd_smb2_request_next_incoming(struct smbd_server_connection *s size_t cur_send_queue_len; struct tevent_req *subreq; - if (sconn->smb2.compound_related_in_progress) { - /* - * Can't read another until the related - * compound is done. - */ - return NT_STATUS_OK; - } - if (tevent_queue_length(sconn->smb2.recv_queue) > 0) { /* * if there is already a smbd_smb2_request_read |