[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