From 03e346554f3f36e1f4bc1fce67e0d9f9dfd798e8 Mon Sep 17 00:00:00 2001 From: "Christian P. MOMON" Date: Tue, 13 Apr 2021 04:23:31 +0200 Subject: [PATCH] Fixed connexion exception retry (#5261). --- src/org/april/hebdobot/bot/Hebdobot.java | 82 ++++++++++++++---------- 1 file changed, 48 insertions(+), 34 deletions(-) diff --git a/src/org/april/hebdobot/bot/Hebdobot.java b/src/org/april/hebdobot/bot/Hebdobot.java index 12d4f1b..230c32c 100644 --- a/src/org/april/hebdobot/bot/Hebdobot.java +++ b/src/org/april/hebdobot/bot/Hebdobot.java @@ -400,6 +400,7 @@ public class Hebdobot extends PircBot */ public void run() throws HebdobotException { + // try { logger.info("Cron initializing."); @@ -408,46 +409,59 @@ public class Hebdobot extends PircBot this.cronManager.start(); } logger.info("Cron initialized."); - - logger.info("Bot connection."); - this.connect(this.host, this.port); - logger.info("Bot connected."); - - if (this.identifyPassword == null) - { - logger.info("Skipped identify."); - } - else - { - logger.info("Apply identify."); - sendMessage("NickServ", "identify " + this.identifyNick + " " + this.identifyPassword); - logger.info("Applied identify."); - } - - logger.info("Bot joining channel ({}).", this.channel); - this.joinChannel(this.channel); - logger.info("Bot ready."); } - catch (NickAlreadyInUseException exception) - { - throw new HebdobotException(exception); - } - catch (IOException exception) - { - throw new HebdobotException(exception); - } - catch (IrcException exception) - { - throw new HebdobotException(exception); - } - catch (SchedulerException exception) + catch (SchedulerException | ParseException exception) { throw new HebdobotException("Error in cron settings.", exception); } - catch (ParseException exception) + + // Manage "Caused by: java.net.UnknownHostException: irc.freenode.org". + boolean ended = false; + while (!ended) { - throw new HebdobotException(exception); + try + { + logger.info("Bot connection."); + this.connect(this.host, this.port); + logger.info("Bot connected."); + ended = true; + } + catch (NickAlreadyInUseException exception) + { + throw new HebdobotException(exception); + } + catch (IOException exception) + { + try + { + Thread.sleep(60000); + } + catch (InterruptedException subException) + { + subException.printStackTrace(); + } + } + catch (IrcException exception) + { + throw new HebdobotException(exception); + } } + + // + if (this.identifyPassword == null) + { + logger.info("Skipped identify."); + } + else + { + logger.info("Apply identify."); + sendMessage("NickServ", "identify " + this.identifyNick + " " + this.identifyPassword); + logger.info("Applied identify."); + } + + logger.info("Bot joining channel ({}).", this.channel); + this.joinChannel(this.channel); + logger.info("Bot ready."); } /**