Commit 6e987428 authored by Martin Sustrik's avatar Martin Sustrik

Precise reconnect interval randomised

Till now the random fraction of the reconnect interval was
computed based on process ID. This patch uses pseudo-random
generated (seeded by exact time of when the process was
started) to compute the interval.
Signed-off-by: 's avatarMartin Sustrik <sustrik@250bpm.com>
parent ce7a9a58
......@@ -25,6 +25,7 @@
#include "tcp_engine.hpp"
#include "io_thread.hpp"
#include "platform.hpp"
#include "random.hpp"
#include "ip.hpp"
#include "err.hpp"
......@@ -154,15 +155,9 @@ void zmq::tcp_connecter_t::add_reconnect_timer()
int zmq::tcp_connecter_t::get_new_reconnect_ivl ()
{
#if defined ZMQ_HAVE_WINDOWS
int pid = (int) GetCurrentProcessId ();
#else
int pid = (int) getpid ();
#endif
// The new interval is the current interval + random value.
int this_interval = current_reconnect_ivl +
((pid * 13) % options.reconnect_ivl);
(generate_random () % options.reconnect_ivl);
// Only change the current reconnect interval if the maximum reconnect
// interval was set and if it's larger than the reconnect interval.
......
......@@ -28,6 +28,7 @@
#include "tcp_engine.hpp"
#include "io_thread.hpp"
#include "platform.hpp"
#include "random.hpp"
#include "likely.hpp"
#include "ip.hpp"
#include "err.hpp"
......@@ -169,15 +170,9 @@ void zmq::vtcp_connecter_t::add_reconnect_timer()
int zmq::vtcp_connecter_t::get_new_reconnect_ivl ()
{
#if defined ZMQ_HAVE_WINDOWS
int pid = (int) GetCurrentProcessId ();
#else
int pid = (int) getpid ();
#endif
// The new interval is the current interval + random value.
int this_interval = current_reconnect_ivl +
((pid * 13) % options.reconnect_ivl);
(generate_random () % options.reconnect_ivl);
// Only change the current reconnect interval if the maximum reconnect
// interval was set and if it's larger than the reconnect interval.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment