summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/util/tevent_werror.c13
-rw-r--r--lib/util/tevent_werror.h3
2 files changed, 16 insertions, 0 deletions
diff --git a/lib/util/tevent_werror.c b/lib/util/tevent_werror.c
index d8956b398f..47bd809cbc 100644
--- a/lib/util/tevent_werror.c
+++ b/lib/util/tevent_werror.c
@@ -19,6 +19,7 @@
#include "../replace/replace.h"
#include "tevent_werror.h"
+#include "libcli/util/error.h"
bool _tevent_req_werror(struct tevent_req *req,
WERROR werror,
@@ -79,3 +80,15 @@ void tevent_req_simple_finish_werror(struct tevent_req *subreq,
}
tevent_req_done(req);
}
+
+bool tevent_req_poll_werror(struct tevent_req *req,
+ struct tevent_context *ev,
+ WERROR *err)
+{
+ bool ret = tevent_req_poll(req, ev);
+ if (!ret) {
+ NTSTATUS status = map_nt_error_from_unix_common(errno);
+ *err = ntstatus_to_werror(status);
+ }
+ return ret;
+}
diff --git a/lib/util/tevent_werror.h b/lib/util/tevent_werror.h
index 0e243825b6..1e08c3dc52 100644
--- a/lib/util/tevent_werror.h
+++ b/lib/util/tevent_werror.h
@@ -40,4 +40,7 @@ WERROR tevent_req_simple_recv_werror(struct tevent_req *req);
void tevent_req_simple_finish_werror(struct tevent_req *subreq,
WERROR subreq_error);
+bool tevent_req_poll_werror(struct tevent_req *req,
+ struct tevent_context *ev,
+ WERROR *err);
#endif