summaryrefslogtreecommitdiff
path: root/source4/ntvfs/ntvfs_util.c
diff options
context:
space:
mode:
Diffstat (limited to 'source4/ntvfs/ntvfs_util.c')
-rw-r--r--source4/ntvfs/ntvfs_util.c38
1 files changed, 37 insertions, 1 deletions
diff --git a/source4/ntvfs/ntvfs_util.c b/source4/ntvfs/ntvfs_util.c
index 4036fb0935..929ec037de 100644
--- a/source4/ntvfs/ntvfs_util.c
+++ b/source4/ntvfs/ntvfs_util.c
@@ -1,7 +1,7 @@
/*
Unix SMB/CIFS implementation.
NTVFS utility code
- Copyright (C) Andrew Tridgell 2003
+ Copyright (C) Stefan Metzmacher 2004
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -23,4 +23,40 @@
#include "includes.h"
+NTSTATUS ntvfs_async_state_push(struct smbsrv_request *req,
+ void *private_data,
+ void (*send_fn)(struct smbsrv_request *),
+ struct ntvfs_module_context *ntvfs)
+{
+ struct ntvfs_async_state *async;
+ async = talloc_p(req, struct ntvfs_async_state);
+ if (!async) {
+ return NT_STATUS_NO_MEMORY;
+ }
+
+ async->state = req->async_states->state;
+ async->private_data = private_data;
+ async->send_fn = send_fn;
+ async->status = NT_STATUS_INTERNAL_ERROR;
+
+ async->ntvfs = ntvfs;
+
+ DLIST_ADD(req->async_states, async);
+
+ return NT_STATUS_OK;
+}
+
+void ntvfs_async_state_pop(struct smbsrv_request *req)
+{
+ struct ntvfs_async_state *async;
+
+ async = req->async_states;
+
+ DLIST_REMOVE(req->async_states, async);
+
+ req->async_states->state = async->state;
+ req->async_states->status = async->status;
+
+ talloc_free(async);
+}