struct open_socket_out_state *state;
NTSTATUS status;
- result = async_req_new(mem_ctx);
- if (result == NULL) {
+ if (!async_req_setup(mem_ctx, &result, &state,
+ struct open_socket_out_state)) {
return NULL;
}
- state = talloc(result, struct open_socket_out_state);
- if (state == NULL) {
- goto fail;
- }
- result->private_data = state;
-
state->ev = ev;
state->ss = *pss;
state->port = port;
return result;
post_status:
- if (!async_post_status(result, ev, status)) {
+ if (!async_post_ntstatus(result, ev, status)) {
goto fail;
}
return result;
subreq->async.priv, struct async_req);
struct open_socket_out_state *state = talloc_get_type_abort(
req->private_data, struct open_socket_out_state);
- NTSTATUS status;
+ int err;
int sys_errno;
- status = async_connect_recv(subreq, &sys_errno);
+ err = async_connect_recv(subreq, &sys_errno);
TALLOC_FREE(subreq);
- if (NT_STATUS_IS_OK(status)) {
+ if (err == 0) {
async_req_done(req);
return;
}
- if (NT_STATUS_EQUAL(status, NT_STATUS_IO_TIMEOUT)
- || (sys_errno == EINPROGRESS)
- || (sys_errno == EALREADY)
- || (sys_errno == EAGAIN)) {
+ if (
+#ifdef ETIMEDOUT
+ (sys_errno == ETIMEDOUT) ||
+#endif
+ (sys_errno == EINPROGRESS) ||
+ (sys_errno == EALREADY) ||
+ (sys_errno == EAGAIN)) {
/*
* retry
}
if (!async_req_set_timeout(subreq, state->ev,
timeval_set(0, state->wait_nsec))) {
- async_req_error(req, NT_STATUS_NO_MEMORY);
+ async_req_error(req, ENOMEM);
return;
}
subreq->async.fn = open_socket_out_connected;
#endif
/* real error */
- async_req_error(req, map_nt_error_from_unix(sys_errno));
+ async_req_error(req, sys_errno);
}
NTSTATUS open_socket_out_recv(struct async_req *req, int *pfd)
{
struct open_socket_out_state *state = talloc_get_type_abort(
req->private_data, struct open_socket_out_state);
- NTSTATUS status;
+ int err;
- if (async_req_is_error(req, &status)) {
- return status;
+ if (async_req_is_errno(req, &err)) {
+ return map_nt_error_from_unix(err);
}
*pfd = state->fd;
state->fd = -1;
struct open_socket_out_defer_state *state;
NTSTATUS status;
- result = async_req_new(mem_ctx);
- if (result == NULL) {
+ if (!async_req_setup(mem_ctx, &result, &state,
+ struct open_socket_out_defer_state)) {
return NULL;
}
- state = talloc(result, struct open_socket_out_defer_state);
- if (state == NULL) {
- goto fail;
- }
- result->private_data = state;
-
state->ev = ev;
state->ss = *pss;
state->port = port;
return result;
post_status:
- if (!async_post_status(result, ev, status)) {
+ if (!async_post_ntstatus(result, ev, status)) {
goto fail;
}
return result;
subreq->async.priv, struct async_req);
struct open_socket_out_defer_state *state = talloc_get_type_abort(
req->private_data, struct open_socket_out_defer_state);
- NTSTATUS status;
+ bool ret;
- status = async_wait_recv(subreq);
+ ret = async_wait_recv(subreq);
TALLOC_FREE(subreq);
- if (!NT_STATUS_IS_OK(status)) {
- async_req_error(req, status);
+ if (!ret) {
+ async_req_nterror(req, NT_STATUS_INTERNAL_ERROR);
return;
}
status = open_socket_out_recv(subreq, &state->fd);
TALLOC_FREE(subreq);
if (!NT_STATUS_IS_OK(status)) {
- async_req_error(req, status);
+ async_req_nterror(req, status);
return;
}
async_req_done(req);
req->private_data, struct open_socket_out_defer_state);
NTSTATUS status;
- if (async_req_is_error(req, &status)) {
+ if (async_req_is_nterror(req, &status)) {
return status;
}
*pfd = state->fd;