{
struct torture_mdsscv_state *state = talloc_get_type_abort(
data, struct torture_mdsscv_state);
- struct dcerpc_binding_handle *b = state->p->binding_handle;
NTSTATUS status;
bool ok = true;
torture_comment(tctx, "test_teardown_mdssvc_disconnect\n");
- status = dcerpc_mdssvc_close(b,
+ if (state->p == NULL) {
+ /* We have already been disconnected. */
+ goto done;
+ }
+
+ status = dcerpc_mdssvc_close(state->p->binding_handle,
state,
&state->ph,
0,
tctx, status, NT_STATUS_RPC_PROTOCOL_ERROR, ok, done,
"dcerpc_mdssvc_unknown1 failed\n");
+ /* Free and set to NULL the no-longer-usable pipe. */
+ b = NULL;
+ TALLOC_FREE(state->p);
+
done:
return ok;
}
tctx, status, NT_STATUS_RPC_PROTOCOL_ERROR, ok, done,
"dcerpc_mdssvc_unknown1 failed\n");
+ /* Free and set to NULL the no-longer-usable pipe. */
+ b = NULL;
+ TALLOC_FREE(state->p);
+
done:
return ok;
}
tctx, status, NT_STATUS_RPC_PROTOCOL_ERROR, ok, done,
"dcerpc_mdssvc_unknown1 failed\n");
+ /* Free and set to NULL the no-longer-usable pipe. */
+ b = NULL;
+ TALLOC_FREE(state->p);
+
done:
return ok;
}