summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source4/torture/smb2/lease.c13
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;