summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVolker Lendecke <vl@samba.org>2009-11-14 10:01:44 +0100
committerVolker Lendecke <vl@samba.org>2009-11-14 11:03:28 +0100
commitf38edcd61a556815db2ecfaa265a46e859e980f6 (patch)
tree75dbfb6371655d3a96046aa0c5bd25c78a5f8568
parentc254349261e0a59e4403c314ec8c17aa6b7dfc37 (diff)
downloadsamba-f38edcd61a556815db2ecfaa265a46e859e980f6.tar.gz
samba-f38edcd61a556815db2ecfaa265a46e859e980f6.tar.bz2
samba-f38edcd61a556815db2ecfaa265a46e859e980f6.zip
Introduce tevent_req_poll_ntstatus
-rw-r--r--lib/util/tevent_ntstatus.c17
-rw-r--r--lib/util/tevent_ntstatus.h8
2 files changed, 25 insertions, 0 deletions
diff --git a/lib/util/tevent_ntstatus.c b/lib/util/tevent_ntstatus.c
index 4be4575499..e6b37f64b6 100644
--- a/lib/util/tevent_ntstatus.c
+++ b/lib/util/tevent_ntstatus.c
@@ -74,3 +74,20 @@ void tevent_req_simple_finish_ntstatus(struct tevent_req *subreq,
}
tevent_req_done(req);
}
+
+/*
+ * We have to declare map_nt_error_from_unix here, both s3 and s4 have their
+ * (different) implementations of it.
+ */
+NTSTATUS map_nt_error_from_unix(int sys_errno);
+
+bool tevent_req_poll_ntstatus(struct tevent_req *req,
+ struct tevent_context *ev,
+ NTSTATUS *status)
+{
+ bool ret = tevent_req_poll(req, ev);
+ if (!ret) {
+ *status = map_nt_error_from_unix(errno);
+ }
+ return ret;
+}
diff --git a/lib/util/tevent_ntstatus.h b/lib/util/tevent_ntstatus.h
index 4cf593a454..7f312b707b 100644
--- a/lib/util/tevent_ntstatus.h
+++ b/lib/util/tevent_ntstatus.h
@@ -36,4 +36,12 @@ NTSTATUS tevent_req_simple_recv_ntstatus(struct tevent_req *req);
void tevent_req_simple_finish_ntstatus(struct tevent_req *subreq,
NTSTATUS subreq_status);
+/*
+ * Wrapper for tevent_req_poll that grabs NTSTATUS directly in case of a
+ * failure
+ */
+bool tevent_req_poll_ntstatus(struct tevent_req *req,
+ struct tevent_context *ev,
+ NTSTATUS *status);
+
#endif