From: Jeremy Allison Date: Wed, 12 May 2010 22:19:45 +0000 (-0700) Subject: Pass more SMB2 oplock tests. Only oplock stream tests left to fix. X-Git-Tag: samba-3.6.0pre1~2061 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1101c6214415675fbd32377d539276ca19c4407f;p=thirdparty%2Fsamba.git Pass more SMB2 oplock tests. Only oplock stream tests left to fix. Jeremy. --- diff --git a/source3/smbd/oplock.c b/source3/smbd/oplock.c index d00bcba32a2..1ff1737a3f7 100644 --- a/source3/smbd/oplock.c +++ b/source3/smbd/oplock.c @@ -320,7 +320,10 @@ static void oplock_timeout_handler(struct event_context *ctx, TALLOC_FREE(fsp->oplock_timeout); DEBUG(0, ("Oplock break failed for file %s -- replying anyway\n", fsp_str_dbg(fsp))); - global_client_failed_oplock_break = True; + /* Only set this for SMB1.. */ + if (!smbd_server_conn->allow_smb2) { + global_client_failed_oplock_break = True; + } remove_oplock(fsp); reply_to_oplock_break_requests(fsp); } diff --git a/source3/smbd/smb2_break.c b/source3/smbd/smb2_break.c index bd0fc566f03..a214da0f265 100644 --- a/source3/smbd/smb2_break.c +++ b/source3/smbd/smb2_break.c @@ -204,6 +204,12 @@ static struct tevent_req *smbd_smb2_oplock_break_send(TALLOC_CTX *mem_ctx, fsp_str_dbg(fsp), fsp->fnum )); + /* Are we awaiting a break message ? */ + if (fsp->oplock_timeout == NULL) { + tevent_req_nterror(req, NT_STATUS_INVALID_OPLOCK_PROTOCOL); + return tevent_req_post(req, ev); + } + if ((fsp->sent_oplock_break == BREAK_TO_NONE_SENT) || (break_to_none)) { result = remove_oplock(fsp);