* tcp disconnect, reconnect, do a durable reopen (succeeds)
*/
static bool test_durable_v2_reconnect_delay(struct torture_context *tctx,
- struct smb2_tree *tree)
+ struct smb2_tree *tree,
+ struct smb2_tree *tree2)
{
NTSTATUS status;
TALLOC_CTX *mem_ctx = talloc_new(tctx);
uint64_t previous_session_id;
uint8_t b = 0;
bool ret = true;
+ bool ok;
options = tree->session->transport->options;
previous_session_id = smb2cli_session_current_id(tree->session->smbXcli);
/* disconnect, leaving the durable open */
TALLOC_FREE(tree);
+ h = NULL;
- if (!torture_smb2_connection_ext(tctx, previous_session_id,
- &options, &tree)) {
- torture_warning(tctx, "couldn't reconnect, bailing\n");
- ret = false;
- goto done;
- }
+ ok = torture_smb2_connection_ext(tctx, previous_session_id,
+ &options, &tree);
+ torture_assert_goto(tctx, ok, ret, done, "couldn't reconnect, bailing\n");
ZERO_STRUCT(io);
io.in.fname = fname;
io.in.durable_open_v2 = false;
- io.in.durable_handle_v2 = h;
+ io.in.durable_handle_v2 = &_h;
io.in.create_guid = create_guid;
- h = NULL;
status = smb2_create(tree, mem_ctx, &io);
CHECK_STATUS(status, NT_STATUS_OK);
if (h != NULL) {
smb2_util_close(tree, *h);
}
+ TALLOC_FREE(tree);
- smb2_util_unlink(tree, fname);
+ smb2_util_unlink(tree2, fname);
- talloc_free(tree);
+ TALLOC_FREE(tree2);
talloc_free(mem_ctx);
* basic test for doing a durable open with 1msec cleanup time
* tcp disconnect, wait a bit, reconnect, do a durable reopen (fails)
*/
-static bool test_durable_v2_reconnect_delay_msec(
- struct torture_context *tctx, struct smb2_tree *tree)
+static bool test_durable_v2_reconnect_delay_msec(struct torture_context *tctx,
+ struct smb2_tree *tree,
+ struct smb2_tree *tree2)
{
NTSTATUS status;
TALLOC_CTX *mem_ctx = talloc_new(tctx);
uint64_t previous_session_id;
uint8_t b = 0;
bool ret = true;
+ bool ok;
options = tree->session->transport->options;
previous_session_id = smb2cli_session_current_id(tree->session->smbXcli);
/* disconnect, leaving the durable open */
TALLOC_FREE(tree);
+ h = NULL;
- if (!torture_smb2_connection_ext(tctx, previous_session_id,
- &options, &tree)) {
- torture_warning(tctx, "couldn't reconnect, bailing\n");
- ret = false;
- goto done;
- }
+ ok = torture_smb2_connection_ext(tctx, previous_session_id,
+ &options, &tree);
+ torture_assert_goto(tctx, ok, ret, done, "couldn't reconnect, bailing\n");
sleep(10);
ZERO_STRUCT(io);
io.in.fname = fname;
io.in.durable_open_v2 = false;
- io.in.durable_handle_v2 = h;
+ io.in.durable_handle_v2 = &_h;
io.in.create_guid = create_guid;
- h = NULL;
status = smb2_create(tree, mem_ctx, &io);
CHECK_STATUS(status, NT_STATUS_OBJECT_NAME_NOT_FOUND);
if (h != NULL) {
smb2_util_close(tree, *h);
}
+ TALLOC_FREE(tree);
- smb2_util_unlink(tree, fname);
+ smb2_util_unlink(tree2, fname);
- talloc_free(tree);
+ TALLOC_FREE(tree2);
talloc_free(mem_ctx);
struct torture_suite *suite =
torture_suite_create(ctx, "durable-v2-delay");
- torture_suite_add_1smb2_test(suite, "durable_v2_reconnect_delay", test_durable_v2_reconnect_delay);
- torture_suite_add_1smb2_test(suite,
+ torture_suite_add_2smb2_test(suite,
+ "durable_v2_reconnect_delay",
+ test_durable_v2_reconnect_delay);
+ torture_suite_add_2smb2_test(suite,
"durable_v2_reconnect_delay_msec",
test_durable_v2_reconnect_delay_msec);