diff options
Diffstat (limited to 'source4/ntvfs/ntvfs_util.c')
-rw-r--r-- | source4/ntvfs/ntvfs_util.c | 38 |
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); +} |