From ad5acb51ce31d72f2d6442637201afc1e6c0bd15 Mon Sep 17 00:00:00 2001 From: Jakub Hrozek Date: Mon, 5 Dec 2011 12:19:12 -0500 Subject: [PATCH] Always attempt to connect in sdap_async_sys_connect_done This syncs up with Samba commit 50e30afa608dfdeae8a260730ead9761ed424dad --- src/util/sss_ldap.c | 24 ++++++------------------ 1 files changed, 6 insertions(+), 18 deletions(-) diff --git a/src/util/sss_ldap.c b/src/util/sss_ldap.c index afff22f163affe31f1a4e7b2cba54847041a52b3..0db83a4a6f55c8c1b97e4d10bd954c8c2c1d263a 100644 --- a/src/util/sss_ldap.c +++ b/src/util/sss_ldap.c @@ -201,32 +201,20 @@ static void sdap_async_sys_connect_done(struct tevent_context *ev, struct tevent_req *req = talloc_get_type(priv, struct tevent_req); struct sdap_async_sys_connect_state *state = tevent_req_data(req, struct sdap_async_sys_connect_state); - int ret = EOK; + int ret; int fret; - /* I found the following comment in samba's lib/async_req/async_sock.c: - * Stevens, Network Programming says that if there's a - * successful connect, the socket is only writable. Upon an - * error, it's both readable and writable. - */ - if ((flags & (TEVENT_FD_READ|TEVENT_FD_WRITE)) == - (TEVENT_FD_READ|TEVENT_FD_WRITE)) { - - ret = connect(state->fd, (struct sockaddr *) &state->addr, - state->addr_len); - if (ret == EOK) { - goto done; - } - + errno = 0; + ret = connect(state->fd, (struct sockaddr *) &state->addr, + state->addr_len); + if (ret != EOK) { ret = errno; if (ret == EINPROGRESS || ret == EINTR) { - return; + return; /* Try again later */ } - DEBUG(1, ("connect failed [%d][%s].\n", ret, strerror(ret))); } -done: talloc_zfree(fde); fret = fcntl(state->fd, F_SETFL, state->old_flags); -- 1.7.7.3