diff options
-rw-r--r-- | source4/torture/smb2/lease.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/source4/torture/smb2/lease.c b/source4/torture/smb2/lease.c index 14ce739f2e9..b9df9ba3022 100644 --- a/source4/torture/smb2/lease.c +++ b/source4/torture/smb2/lease.c @@ -406,9 +406,10 @@ static bool test_lease_upgrade2(struct torture_context *tctx, CHECK_VAL((__lba)->out.lease.lease_duration, 0); \ } while(0) -static struct { +static struct torture_lease_break { struct smb2_lease_break lease_break; struct smb2_transport *lease_transport; + bool lease_skip_ack; struct smb2_lease_break_ack lease_break_ack; int count; int failures; @@ -446,8 +447,10 @@ static struct { CHECK_VAL(break_info.count, 1); \ CHECK_LEASE_BREAK(&break_info.lease_break, (__oldstate), \ (__state), (__key)); \ - if (break_info.lease_break.break_flags & \ - SMB2_NOTIFY_BREAK_LEASE_FLAG_ACK_REQUIRED) { \ + if (!break_info.lease_skip_ack && \ + (break_info.lease_break.break_flags & \ + SMB2_NOTIFY_BREAK_LEASE_FLAG_ACK_REQUIRED)) \ + { \ torture_wait_for_lease_break(tctx); \ CHECK_LEASE_BREAK_ACK(&break_info.lease_break_ack, \ (__state), (__key)); \ @@ -494,6 +497,10 @@ static bool torture_lease_handler(struct smb2_transport *transport, break_info.lease_break = *lb; break_info.count++; + if (break_info.lease_skip_ack) { + return true; + } + if (lb->break_flags & SMB2_NOTIFY_BREAK_LEASE_FLAG_ACK_REQUIRED) { ZERO_STRUCT(io); io.in.lease.lease_key = lb->current_lease.lease_key; |