[SSSD] [PATCH] Always attempt to connect in sdap_async_sys_connect_done
Jakub Hrozek
jhrozek at redhat.com
Mon Dec 5 14:01:29 UTC 2011
The attached patch syncs up with Samba commit
50e30afa608dfdeae8a260730ead9761ed424dad
-------------- next part --------------
From ad5acb51ce31d72f2d6442637201afc1e6c0bd15 Mon Sep 17 00:00:00 2001
From: Jakub Hrozek <jhrozek at redhat.com>
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
More information about the sssd-devel
mailing list