summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAmitay Isaacs <amitay@gmail.com>2013-04-05 13:19:34 +1100
committerAmitay Isaacs <amitay@gmail.com>2013-04-05 13:21:02 +1100
commitb1b3d6438010b7b32492aa3667059bbb3c8884d2 (patch)
tree8e06f02b7431643e37f183b8029037884869ee89
parentd82336f1f3396fd3b7716d260ac434284325e756 (diff)
downloadsamba-b1b3d6438010b7b32492aa3667059bbb3c8884d2.tar.gz
samba-b1b3d6438010b7b32492aa3667059bbb3c8884d2.tar.xz
samba-b1b3d6438010b7b32492aa3667059bbb3c8884d2.zip
Revert "client: handle transient connection errors"
This reverts commit dc0c58547cd4b20a8e2cd21f3c8363f34fd03e75. There is a simpler solution that retrying random number of times. Do not set socket non-blocking till connect succeeds. (This used to be ctdb commit 74acc2c568300ef42740cf11299a1b2507047f60)
-rw-r--r--ctdb/client/ctdb_client.c35
1 files changed, 5 insertions, 30 deletions
diff --git a/ctdb/client/ctdb_client.c b/ctdb/client/ctdb_client.c
index d2cf0f69e3..e2ea9b37d9 100644
--- a/ctdb/client/ctdb_client.c
+++ b/ctdb/client/ctdb_client.c
@@ -253,41 +253,16 @@ done:
}
/*
- connect with exponential backoff, thanks Stevens
+ connect to a unix domain socket
*/
-#define CONNECT_MAXSLEEP 64
-static int ctdb_connect_retry(struct ctdb_context *ctdb)
+int ctdb_socket_connect(struct ctdb_context *ctdb)
{
struct sockaddr_un addr;
- int secs;
- int ret = 0;
memset(&addr, 0, sizeof(addr));
addr.sun_family = AF_UNIX;
strncpy(addr.sun_path, ctdb->daemon.name, sizeof(addr.sun_path));
- for (secs = 1; secs <= CONNECT_MAXSLEEP; secs *= 2) {
- ret = connect(ctdb->daemon.sd, (struct sockaddr *)&addr,
- sizeof(addr));
- if ((ret == 0) || (errno != EAGAIN)) {
- break;
- }
-
- if (secs <= (CONNECT_MAXSLEEP / 2)) {
- DEBUG(DEBUG_ERR,("connect failed: %s, retry in %d second(s)\n",
- strerror(errno), secs));
- sleep(secs);
- }
- }
-
- return ret;
-}
-
-/*
- connect to a unix domain socket
-*/
-int ctdb_socket_connect(struct ctdb_context *ctdb)
-{
ctdb->daemon.sd = socket(AF_UNIX, SOCK_STREAM, 0);
if (ctdb->daemon.sd == -1) {
DEBUG(DEBUG_ERR,(__location__ " Failed to open client socket. Errno:%s(%d)\n", strerror(errno), errno));
@@ -296,11 +271,11 @@ int ctdb_socket_connect(struct ctdb_context *ctdb)
set_nonblocking(ctdb->daemon.sd);
set_close_on_exec(ctdb->daemon.sd);
-
- if (ctdb_connect_retry(ctdb) == -1) {
- DEBUG(DEBUG_ERR,(__location__ " Failed to connect client socket to daemon. Errno:%s(%d)\n", strerror(errno), errno));
+
+ if (connect(ctdb->daemon.sd, (struct sockaddr *)&addr, sizeof(addr)) == -1) {
close(ctdb->daemon.sd);
ctdb->daemon.sd = -1;
+ DEBUG(DEBUG_ERR,(__location__ " Failed to connect client socket to daemon. Errno:%s(%d)\n", strerror(errno), errno));
return -1;
}