status = Hash.new\r
status[:failures] = 0\r
status[:first_run] = true\r
- @watch[feed.handle] = @bot.timer.add(0, status) {\r
+ @watch[feed.handle] = @bot.timer.add(0) {\r
debug "watcher for #{feed} started"\r
failures = status[:failures]\r
first_run = status.delete(:first_run)\r
status[:failures] = failures\r
\r
timer = nil\r
+ seconds = @bot.config['rss.thread_sleep']\r
feed.mutex.synchronize do\r
- timer = @watch[feed.handle]\r
- seconds = (feed.refresh_rate || @bot.config['rss.thread_sleep']) * (failures + 1)\r
+ timer = @watch[feed.handle]\r
+ seconds = feed.refresh_rate if feed.refresh_rate\r
end\r
+ seconds *= failures + 1\r
seconds += seconds * (rand(100)-50)/100\r
debug "watcher for #{feed} going to sleep #{seconds} seconds.."\r
- @bot.timer.reschedule(timer, seconds)\r
+ @bot.timer.reschedule(timer, seconds) rescue warning "watcher for #{feed} failed to reschedule: #{$!.inspect}"\r
}\r
debug "watcher for #{feed} added"\r
end\r