From: Andrew Bartlett Date: Wed, 15 May 2019 04:07:16 +0000 (+1200) Subject: torture: Address flapping samba4.rpc.altercontext test X-Git-Tag: ldb-2.0.5~750 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=3b509129f5edf47e3753dce3d0375e485eb251ac;p=thirdparty%2Fsamba.git torture: Address flapping samba4.rpc.altercontext test NT_STATUS_CONNECTION_DISCONNECTED and NT_STATUS_CONNECTION_RESET are equivilent for the purposes of this test, both come from the server shutting down the connection, the difference comes from two different unix error numbers that can come from this. Signed-off-by: Andrew Bartlett Reviewed-by: Gary Lockyer Autobuild-User(master): Andrew Bartlett Autobuild-Date(master): Mon May 20 05:17:42 UTC 2019 on sn-devel-184 --- diff --git a/source4/torture/rpc/alter_context.c b/source4/torture/rpc/alter_context.c index 60e03db2914..22abd97e2fc 100644 --- a/source4/torture/rpc/alter_context.c +++ b/source4/torture/rpc/alter_context.c @@ -85,7 +85,8 @@ bool torture_rpc_alter_context(struct torture_context *torture) if (NT_STATUS_EQUAL(status, NT_STATUS_RPC_PROTOCOL_ERROR)) { ret &= test_lsa_OpenPolicy2_ex(p->binding_handle, torture, &handle, - NT_STATUS_CONNECTION_DISCONNECTED); + NT_STATUS_CONNECTION_DISCONNECTED, + NT_STATUS_CONNECTION_RESET); torture_assert(torture, !dcerpc_binding_handle_is_connected(p->binding_handle), "dcerpc disonnected"); diff --git a/source4/torture/rpc/lsa.c b/source4/torture/rpc/lsa.c index bc1e9553039..6cdab54c6ca 100644 --- a/source4/torture/rpc/lsa.c +++ b/source4/torture/rpc/lsa.c @@ -154,7 +154,8 @@ static bool test_OpenPolicy_fail(struct dcerpc_binding_handle *b, bool test_lsa_OpenPolicy2_ex(struct dcerpc_binding_handle *b, struct torture_context *tctx, struct policy_handle **handle, - NTSTATUS expected_status) + NTSTATUS expected_status, + NTSTATUS expected_status2) { struct lsa_ObjectAttribute attr; struct lsa_QosInfo qos; @@ -184,9 +185,15 @@ bool test_lsa_OpenPolicy2_ex(struct dcerpc_binding_handle *b, r.out.handle = *handle; status = dcerpc_lsa_OpenPolicy2_r(b, tctx, &r); - torture_assert_ntstatus_equal(tctx, status, expected_status, - "OpenPolicy2 failed"); - if (!NT_STATUS_IS_OK(expected_status)) { + + /* Allow two possible failure status codes */ + if (!NT_STATUS_EQUAL(status, expected_status2)) { + torture_assert_ntstatus_equal(tctx, status, + expected_status, + "OpenPolicy2 failed"); + } + if (!NT_STATUS_IS_OK(expected_status) || + !NT_STATUS_IS_OK(expected_status2)) { return true; } @@ -202,7 +209,8 @@ bool test_lsa_OpenPolicy2(struct dcerpc_binding_handle *b, struct torture_context *tctx, struct policy_handle **handle) { - return test_lsa_OpenPolicy2_ex(b, tctx, handle, NT_STATUS_OK); + return test_lsa_OpenPolicy2_ex(b, tctx, handle, + NT_STATUS_OK, NT_STATUS_OK); } static bool test_OpenPolicy2_fail(struct dcerpc_binding_handle *b,