diff options
author | Stefan Metzmacher <metze@samba.org> | 2006-07-17 09:44:13 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 14:10:12 -0500 |
commit | 8075ce63fdbaeb2fe508097a46d794a49138c307 (patch) | |
tree | bdc32b1f46568b1b9e16b754d17259c5b4ce29df /source4/smb_server/smb2/smb2_server.h | |
parent | a5bafffd66f511375dda4c974e6a1f152fc7aa16 (diff) | |
download | samba-8075ce63fdbaeb2fe508097a46d794a49138c307.tar.gz samba-8075ce63fdbaeb2fe508097a46d794a49138c307.tar.bz2 samba-8075ce63fdbaeb2fe508097a46d794a49138c307.zip |
r17084: implement SMB2 Cancel in the server,
that makes it possible for clients to cancel
async requests, like NOTIFY...
metze
(This used to be commit eaccd3c4353833daf584aaea4d7e8f11004a8072)
Diffstat (limited to 'source4/smb_server/smb2/smb2_server.h')
-rw-r--r-- | source4/smb_server/smb2/smb2_server.h | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/source4/smb_server/smb2/smb2_server.h b/source4/smb_server/smb2/smb2_server.h index 838abdf4d6..b58bf5511a 100644 --- a/source4/smb_server/smb2/smb2_server.h +++ b/source4/smb_server/smb2/smb2_server.h @@ -53,6 +53,9 @@ struct smb2srv_request { /* for matching request and reply */ uint64_t seqnum; + /* the id that can be used to cancel the request */ + uint32_t pending_id; + struct smb2_request_buffer in; struct smb2_request_buffer out; }; @@ -127,7 +130,13 @@ struct smbsrv_request; */ #define SMB2SRV_CALL_NTVFS_BACKEND(cmd) do { \ req->ntvfs->async_states->status = cmd; \ - if (!(req->ntvfs->async_states->state & NTVFS_ASYNC_STATE_ASYNC)) { \ + if (req->ntvfs->async_states->state & NTVFS_ASYNC_STATE_ASYNC) { \ + NTSTATUS _status; \ + _status = smb2srv_queue_pending(req); \ + if (!NT_STATUS_IS_OK(_status)) { \ + ntvfs_cancel(req->ntvfs); \ + } \ + } else { \ req->ntvfs->async_states->send_fn(req->ntvfs); \ } \ } while (0) |