summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorDonald Sharp <sharpd@cumulusnetworks.com>2016-12-12 13:59:16 +0100
committerLou Berger <lberger@labn.net>2017-01-02 21:13:32 +0100
commitff9eb96a93cdb5509a45f84bc557eb6dc9122c27 (patch)
tree470258bf55e4c5f2f1ef43cec5256f4ae5e53ef2 /lib
parentbgpd: fix ecommunity hash related leak (diff)
downloadfrr-ff9eb96a93cdb5509a45f84bc557eb6dc9122c27.tar.xz
frr-ff9eb96a93cdb5509a45f84bc557eb6dc9122c27.zip
lib: Partial Revert of 4ecc09d and modify zclient connect behavior
Commit 43cc09d has been shown to cause several issues with clients connecting. Partial revert, since I wanted to keep the debug logs added for that commit, as well remove the piece of code that stops attempting to connect to zebra. If we've failed a bunch of times, there is nothing wrong with continuing to do so once every 60 seconds. I've debug guarded the connect failure for those people running bgp without zebra. Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com> Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
Diffstat (limited to 'lib')
-rw-r--r--lib/zclient.c28
1 files changed, 9 insertions, 19 deletions
diff --git a/lib/zclient.c b/lib/zclient.c
index 894e0d19e..440de3635 100644
--- a/lib/zclient.c
+++ b/lib/zclient.c
@@ -216,7 +216,9 @@ zclient_socket(void)
ret = connect (sock, (struct sockaddr *) &serv, sizeof (serv));
if (ret < 0)
{
- zlog_warn ("%s connect failure: %d", __PRETTY_FUNCTION__, errno);
+ if (zclient_debug)
+ zlog_warn ("%s connect failure: %d(%s)", __PRETTY_FUNCTION__,
+ errno, safe_strerror (errno));
close (sock);
return -1;
}
@@ -252,7 +254,9 @@ zclient_socket_un (const char *path)
ret = connect (sock, (struct sockaddr *) &addr, len);
if (ret < 0)
{
- zlog_warn ("%s connect failure: %d", __PRETTY_FUNCTION__, errno);
+ if (zclient_debug)
+ zlog_warn ("%s connect failure: %d(%s)", __PRETTY_FUNCTION__,
+ errno, safe_strerror (errno));
close (sock);
return -1;
}
@@ -572,23 +576,11 @@ zclient_start (struct zclient *zclient)
if (zclient->t_connect)
return 0;
- /*
- * If we fail to connect to the socket on initialization,
- * Let's wait a second and see if we can reconnect.
- * Cause if we don't connect, we never attempt to
- * reconnect. On startup if zebra is slow we
- * can get into this situation.
- */
- while (zclient_socket_connect(zclient) < 0 && zclient->fail < 5)
+ if (zclient_socket_connect(zclient) < 0)
{
if (zclient_debug)
zlog_debug ("zclient connection fail");
zclient->fail++;
- sleep (1);
- }
-
- if (zclient->sock < 0)
- {
zclient_event (ZCLIENT_CONNECT, zclient);
return -1;
}
@@ -1727,11 +1719,9 @@ zclient_event (enum event event, struct zclient *zclient)
thread_add_event (zclient->master, zclient_connect, zclient, 0);
break;
case ZCLIENT_CONNECT:
- if (zclient->fail >= 10)
- return;
if (zclient_debug)
- zlog_debug ("zclient connect schedule interval is %d",
- zclient->fail < 3 ? 10 : 60);
+ zlog_debug ("zclient connect failures: %d schedule interval is now %d",
+ zclient->fail, zclient->fail < 3 ? 10 : 60);
if (! zclient->t_connect)
zclient->t_connect =
thread_add_timer (zclient->master, zclient_connect, zclient,