From: Giuseppe Bilotta Date: Wed, 28 Jan 2009 13:51:21 +0000 (+0100) Subject: ircbot: the reconnect must be protected X-Git-Url: https://git.netwichtig.de/gitweb/?a=commitdiff_plain;h=78978a4654ad851b0fa18bcd3d165b9c173f0375;p=user%2Fhenk%2Fcode%2Fruby%2Frbot.git ircbot: the reconnect must be protected The reconnect() call in the main loop must be protected in the begin/rescue blocks. Most of the rescue blocks can be fall-through, because the begin/end is wrapped in a loop. The only exception is the ServerError block that issues a retry lest too_fast is reset to false even when it should be true. --- diff --git a/lib/rbot/ircbot.rb b/lib/rbot/ircbot.rb index 0a18f04c..b47c235b 100644 --- a/lib/rbot/ircbot.rb +++ b/lib/rbot/ircbot.rb @@ -905,8 +905,9 @@ class Bot while true too_fast = false begin - quit if $interrupted > 0 quit_msg = nil + reconnect(quit_msg, too_fast) + quit if $interrupted > 0 while @socket.connected? quit if $interrupted > 0 @@ -936,6 +937,7 @@ class Bot # received an ERROR from the server quit_msg = "server ERROR: " + e.message too_fast = e.message.index("reconnect too fast") + retry rescue BDB::Fatal => e fatal "fatal bdb error: #{e.pretty_inspect}" DBTree.stats @@ -951,7 +953,6 @@ class Bot log_session_end exit 2 end - reconnect(quit_msg, too_fast) end end