diff options
author | Amitay Isaacs <amitay@gmail.com> | 2013-03-18 13:45:08 +1100 |
---|---|---|
committer | Amitay Isaacs <amitay@gmail.com> | 2013-04-05 13:21:41 +1100 |
commit | 41f0252da22b97667ecdbc2235930d3b2523aa4d (patch) | |
tree | 0b57c18526eae8c8a55a66f927377a46160570bd /ctdb/client | |
parent | b1b3d6438010b7b32492aa3667059bbb3c8884d2 (diff) | |
download | samba-41f0252da22b97667ecdbc2235930d3b2523aa4d.tar.gz samba-41f0252da22b97667ecdbc2235930d3b2523aa4d.tar.xz samba-41f0252da22b97667ecdbc2235930d3b2523aa4d.zip |
client: Set the socket non-blocking only after connect succeeds
If the socket is set non-blocking before connect, then we should catch
EAGAIN errors and retry. Instead of adding a random number of retries,
better to wait for connect to succeed and then set the socket to
non-blocking.
Signed-off-by: Amitay Isaacs <amitay@gmail.com>
(This used to be ctdb commit 524ec206e6a5e8b11723f4d8d1251ed5d84063b0)
Diffstat (limited to 'ctdb/client')
-rw-r--r-- | ctdb/client/ctdb_client.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/ctdb/client/ctdb_client.c b/ctdb/client/ctdb_client.c index e2ea9b37d9c..76780b0b5ab 100644 --- a/ctdb/client/ctdb_client.c +++ b/ctdb/client/ctdb_client.c @@ -269,9 +269,6 @@ int ctdb_socket_connect(struct ctdb_context *ctdb) return -1; } - set_nonblocking(ctdb->daemon.sd); - set_close_on_exec(ctdb->daemon.sd); - if (connect(ctdb->daemon.sd, (struct sockaddr *)&addr, sizeof(addr)) == -1) { close(ctdb->daemon.sd); ctdb->daemon.sd = -1; @@ -279,6 +276,9 @@ int ctdb_socket_connect(struct ctdb_context *ctdb) return -1; } + set_nonblocking(ctdb->daemon.sd); + set_close_on_exec(ctdb->daemon.sd); + ctdb->daemon.queue = ctdb_queue_setup(ctdb, ctdb, ctdb->daemon.sd, CTDB_DS_ALIGNMENT, ctdb_client_read_cb, ctdb, "to-ctdbd"); |