From 5c3f7de5c3ce30af3132e45d4db64a49cb927d55 Mon Sep 17 00:00:00 2001 From: Ward Wouts Date: Sat, 18 May 2002 17:39:32 +0000 Subject: [PATCH] test if server connections succeed, if not drop the server from the list --- trunk/ripnews/news/article.rb | 29 ++++++++++++++++++++++------- 1 file changed, 22 insertions(+), 7 deletions(-) diff --git a/trunk/ripnews/news/article.rb b/trunk/ripnews/news/article.rb index 32dd248..8286c1e 100644 --- a/trunk/ripnews/news/article.rb +++ b/trunk/ripnews/news/article.rb @@ -29,18 +29,31 @@ def initialize(nntpservers, groupname, newsrc="~/.newsrc") @connections = {} @serverlist.collect{|server| @connections[server] = {} - @connections[server]["nntp"] = Net::NNTP.new(server) - @connections[server]["skip_ids"] = Set::IntSpan.new() - @connections[server]["newsrc"] = News::Newsrc.new("#{newsrc}.#{server}") - set_skip_ids(server, @connections[server]["newsrc"].marked_articles(@group)) - print "Connection type: #{@connections[server]["nntp"].type.to_s}\n" + begin + @connections[server]["nntp"] = Net::NNTP.new(server) + @connections[server]["skip_ids"] = Set::IntSpan.new() + @connections[server]["newsrc"] = News::Newsrc.new("#{newsrc}.#{server}") + set_skip_ids(server, @connections[server]["newsrc"].marked_articles(@group)) + rescue SocketError + print "Connection to #{server} failed, removing from server list...\n" + @connections.delete(server) + @serverlist.delete(server) + end } end def reconnect(server) print "Trying to reconnect to #{server}...\n" - @connections[server]["nntp"] = Net::NNTP.new(server) - print "Connection type: #{@connections[server]["nntp"].type.to_s}\n" + begin + @connections[server]["nntp"] = Net::NNTP.new(server) + rescue SocketError + print "Connection to #{server} failed, removing from server list...\n" + @connections.delete(server) + @serverlist.delete(server) + return false + end + print "Succesfully reconnected to #{server}\n" + return true end def add(messid, id, server, subject) @@ -118,6 +131,8 @@ def get_articles(cachedir=false) end end rescue Net::NNTP::RuntimeError + print "Caught Net::NNTP::RuntimeError reading from server #{server}\n" + print "Error: #{$!}\n" rescue Errno::EPIPE, Errno::ECONNRESET print "Caught Errno::EPIPE reading from server #{server}\n" print "Error: #{$!}\n"