X-Git-Url: http://git.samba.org/samba.git/?p=ira%2Fwip.git;a=blobdiff_plain;f=lib%2Fasync_req%2Fasync_sock.c;h=1f48697f26f825a729c618165b36f0846de4fd9e;hp=40e7bca4c86da183de29bb3fce494615fac18b29;hb=ddd3da8ab7b82a59b84338fb4814981d5ae2f8e4;hpb=9569d979de43970399f33645323e9091338084f6 diff --git a/lib/async_req/async_sock.c b/lib/async_req/async_sock.c index 40e7bca4c86..1f48697f26f 100644 --- a/lib/async_req/async_sock.c +++ b/lib/async_req/async_sock.c @@ -268,8 +268,8 @@ struct tevent_req *async_connect_send(TALLOC_CTX *mem_ctx, state->result = connect(fd, address, address_len); if (state->result == 0) { - errno = 0; - goto post_errno; + tevent_req_done(result); + goto done; } /** @@ -284,25 +284,22 @@ struct tevent_req *async_connect_send(TALLOC_CTX *mem_ctx, errno == EISCONN || #endif errno == EAGAIN || errno == EINTR)) { + state->sys_errno = errno; goto post_errno; } fde = tevent_add_fd(ev, state, fd, TEVENT_FD_READ | TEVENT_FD_WRITE, async_connect_connected, result); if (fde == NULL) { - errno = ENOMEM; + state->sys_errno = ENOMEM; goto post_errno; } return result; post_errno: - state->sys_errno = errno; + tevent_req_error(result, state->sys_errno); + done: fcntl(fd, F_SETFL, state->old_sockflags); - if (state->sys_errno == 0) { - tevent_req_done(result); - } else { - tevent_req_error(result, state->sys_errno); - } return tevent_req_post(result, ev); }