return NT_STATUS_OK;
}
-static NTSTATUS fss_vfs_conn_create(TALLOC_CTX *mem_ctx,
- struct tevent_context *ev,
- struct messaging_context *msg_ctx,
+static NTSTATUS fss_conn_create_tos(struct messaging_context *msg_ctx,
struct auth_session_info *session_info,
int snum,
struct connection_struct **conn_out);
-static void fss_vfs_conn_destroy(struct connection_struct *conn);
/* test if system path exists */
static bool snap_path_exists(TALLOC_CTX *ctx, struct messaging_context *msg_ctx,
goto out;
}
- status = fss_vfs_conn_create(frame, server_event_context(),
- msg_ctx, NULL, snum, &conn);
-
+ status = fss_conn_create_tos(msg_ctx, NULL, snum, &conn);
if(!NT_STATUS_IS_OK(status)) {
goto out;
}
}
result = true;
out:
- if (conn) {
- fss_vfs_conn_destroy(conn);
- }
TALLOC_FREE(frame);
return result;
}
return status;
}
-static NTSTATUS fss_vfs_conn_create(TALLOC_CTX *mem_ctx,
- struct tevent_context *ev,
- struct messaging_context *msg_ctx,
+static NTSTATUS fss_conn_create_tos(struct messaging_context *msg_ctx,
struct auth_session_info *session_info,
int snum,
struct connection_struct **conn_out)
{
- struct connection_struct *conn = NULL;
+ struct conn_struct_tos *c = NULL;
NTSTATUS status;
- status = create_conn_struct(mem_ctx, ev, msg_ctx, &conn,
- snum, lp_path(mem_ctx, snum),
- session_info);
+ status = create_conn_struct_tos(msg_ctx,
+ snum,
+ lp_path(talloc_tos(), snum),
+ session_info,
+ &c);
if (!NT_STATUS_IS_OK(status)) {
DEBUG(0,("failed to create conn for vfs: %s\n",
nt_errstr(status)));
return status;
}
- status = set_conn_force_user_group(conn, snum);
+ status = set_conn_force_user_group(c->conn, snum);
if (!NT_STATUS_IS_OK(status)) {
DEBUG(0, ("failed set force user / group\n"));
- goto err_free_conn;
+ TALLOC_FREE(c);
+ return status;
}
- *conn_out = conn;
-
+ *conn_out = c->conn;
return NT_STATUS_OK;
-
-err_free_conn:
- SMB_VFS_DISCONNECT(conn);
- conn_free(conn);
- return status;
-}
-
-static void fss_vfs_conn_destroy(struct connection_struct *conn)
-{
- SMB_VFS_DISCONNECT(conn);
- conn_free(conn);
}
static struct fss_sc_set *sc_set_lookup(struct fss_sc_set *sc_set_head,
goto err_tmp_free;
}
- status = fss_vfs_conn_create(frame, server_event_context(),
- p->msg_ctx, p->session_info, snum, &conn);
+ status = fss_conn_create_tos(p->msg_ctx, p->session_info, snum, &conn);
if (!NT_STATUS_IS_OK(status)) {
ret = HRES_ERROR_V(HRES_E_ACCESSDENIED);
goto err_tmp_free;
}
if (!become_user_by_session(conn, p->session_info)) {
DEBUG(0, ("failed to become user\n"));
- fss_vfs_conn_destroy(conn);
ret = HRES_ERROR_V(HRES_E_ACCESSDENIED);
goto err_tmp_free;
}
status = SMB_VFS_SNAP_CHECK_PATH(conn, frame, path_name, &base_vol);
unbecome_user();
- fss_vfs_conn_destroy(conn);
if (!NT_STATUS_IS_OK(status)) {
ret = FSRVP_E_NOT_SUPPORTED;
goto err_tmp_free;
return NT_STATUS_UNSUCCESSFUL;
}
- status = fss_vfs_conn_create(frame,
- ev, msg_ctx, session_info,
- snum, &conn);
+ status = fss_conn_create_tos(msg_ctx, session_info, snum, &conn);
if (!NT_STATUS_IS_OK(status)) {
TALLOC_FREE(frame);
return status;
if (!become_user_by_session(conn, session_info)) {
DEBUG(0, ("failed to become user\n"));
- fss_vfs_conn_destroy(conn);
TALLOC_FREE(frame);
return NT_STATUS_ACCESS_DENIED;
}
&sc->create_ts, rw,
base_path, snap_path);
unbecome_user();
- fss_vfs_conn_destroy(conn);
if (!NT_STATUS_IS_OK(status)) {
DEBUG(0, ("snap create failed: %s\n", nt_errstr(status)));
TALLOC_FREE(frame);
return HRES_ERROR_V(HRES_E_INVALIDARG);
}
- status = fss_vfs_conn_create(frame, server_event_context(),
- p->msg_ctx, p->session_info, snum, &conn);
+ status = fss_conn_create_tos(p->msg_ctx, p->session_info, snum, &conn);
if (!NT_STATUS_IS_OK(status)) {
TALLOC_FREE(frame);
return HRES_ERROR_V(HRES_E_ACCESSDENIED);
}
if (!become_user_by_session(conn, p->session_info)) {
DEBUG(0, ("failed to become user\n"));
- fss_vfs_conn_destroy(conn);
TALLOC_FREE(frame);
return HRES_ERROR_V(HRES_E_ACCESSDENIED);
}
lp_path(frame, snum),
&base_vol);
unbecome_user();
- fss_vfs_conn_destroy(conn);
if (!NT_STATUS_IS_OK(status)) {
TALLOC_FREE(frame);
return FSRVP_E_NOT_SUPPORTED;
goto err_tmp_free;
}
- status = fss_vfs_conn_create(frame, server_event_context(),
- p->msg_ctx, p->session_info, snum, &conn);
+ status = fss_conn_create_tos(p->msg_ctx, p->session_info, snum, &conn);
if (!NT_STATUS_IS_OK(status)) {
goto err_tmp_free;
}
if (!become_user_by_session(conn, p->session_info)) {
DEBUG(0, ("failed to become user\n"));
status = NT_STATUS_ACCESS_DENIED;
- goto err_conn_destroy;
+ goto err_tmp_free;
}
status = SMB_VFS_SNAP_DELETE(conn, frame, sc->volume_name,
sc->sc_path);
unbecome_user();
if (!NT_STATUS_IS_OK(status)) {
- goto err_conn_destroy;
+ goto err_tmp_free;
}
/* XXX set timeout r->in.TimeOutInMilliseconds */
}
status = NT_STATUS_OK;
-err_conn_destroy:
- fss_vfs_conn_destroy(conn);
err_tmp_free:
- talloc_free(frame);
+ TALLOC_FREE(frame);
return fss_ntstatus_map(status);
}