summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 002fec6)
raw | patch | inline | side by side (parent: 002fec6)
author | Florian Forster <octo@collectd.org> | |
Tue, 16 Sep 2014 14:05:52 +0000 (16:05 +0200) | ||
committer | Florian Forster <octo@collectd.org> | |
Tue, 16 Sep 2014 14:05:52 +0000 (16:05 +0200) |
Fixes: #625
src/write_graphite.c | patch | blob | history |
diff --git a/src/write_graphite.c b/src/write_graphite.c
index c17b7f36a6dc787e1eeac749388f5a8f6c5e8123..5c7bbd553a2dbeb79b51fe6625c41dcd83f0a215 100644 (file)
--- a/src/write_graphite.c
+++ b/src/write_graphite.c
# define WG_SEND_BUF_SIZE 1428
#endif
+#ifndef WG_MIN_RECONNECT_INTERVAL
+# define WG_MIN_RECONNECT_INTERVAL TIME_T_TO_CDTIME_T (1)
+#endif
+
/*
* Private variables
*/
pthread_mutex_t send_lock;
c_complain_t init_complaint;
+ cdtime_t last_connect_time;
};
struct addrinfo ai_hints;
struct addrinfo *ai_list;
struct addrinfo *ai_ptr;
+ cdtime_t now;
int status;
const char *node = cb->node ? cb->node : WG_DEFAULT_NODE;
if (cb->sock_fd > 0)
return (0);
+ /* Don't try to reconnect too often. By default, one reconnection attempt
+ * is made per second. */
+ now = cdtime ();
+ if ((now - cb->last_connect_time) < WG_MIN_RECONNECT_INTERVAL)
+ return (EAGAIN);
+ cb->last_connect_time = now;
+
memset (&ai_hints, 0, sizeof (ai_hints));
#ifdef AI_ADDRCONFIG
ai_hints.ai_flags |= AI_ADDRCONFIG;