Module: ngircd.git Branch: master Commit: fb924933765238808feb05fb7178402058026897 URL: http://ngircd.barton.de/cgi-bin/gitweb.cgi?p=ngircd.git&a=commit;h=fb924...
Author: Alexander Barton alex@barton.de Date: Sun Oct 28 20:19:57 2012 +0100
Make server reconnect time a little bit more random
Add randomly up to 15 seconds to the reconnect delay for outgoing server links when the connection has been "short" and therefore the "ConnectRetry" delay is being enforced.
This should make it even more unlikely that two servers deadlock each other when both are trying to connect to the other one at the same time, for example in test environments.
---
src/ngircd/conf.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/src/ngircd/conf.c b/src/ngircd/conf.c index 6a7f633..8152512 100644 --- a/src/ngircd/conf.c +++ b/src/ngircd/conf.c @@ -481,8 +481,12 @@ Conf_UnsetServer( CONN_ID Idx ) * require the next attempt to be delayed. */ Conf_Server[i].lasttry = t - Conf_ConnectRetry + RECONNECT_DELAY; - } else - Conf_Server[i].lasttry = t; + } else { + /* "Short" connection, enforce "ConnectRetry" + * but randomize it a little bit: 15 seconds. */ + Conf_Server[i].lasttry = + t + rand() / (RAND_MAX / 15); + } } } }