test if server connections succeed, if not drop the server from the list

This commit is contained in:
Ward Wouts 2002-05-18 17:39:32 +00:00
parent 6ca376c97c
commit 5c3f7de5c3

View file

@ -29,18 +29,31 @@ def initialize(nntpservers, groupname, newsrc="~/.newsrc")
@connections = {} @connections = {}
@serverlist.collect{|server| @serverlist.collect{|server|
@connections[server] = {} @connections[server] = {}
begin
@connections[server]["nntp"] = Net::NNTP.new(server) @connections[server]["nntp"] = Net::NNTP.new(server)
@connections[server]["skip_ids"] = Set::IntSpan.new() @connections[server]["skip_ids"] = Set::IntSpan.new()
@connections[server]["newsrc"] = News::Newsrc.new("#{newsrc}.#{server}") @connections[server]["newsrc"] = News::Newsrc.new("#{newsrc}.#{server}")
set_skip_ids(server, @connections[server]["newsrc"].marked_articles(@group)) set_skip_ids(server, @connections[server]["newsrc"].marked_articles(@group))
print "Connection type: #{@connections[server]["nntp"].type.to_s}\n" rescue SocketError
print "Connection to #{server} failed, removing from server list...\n"
@connections.delete(server)
@serverlist.delete(server)
end
} }
end end
def reconnect(server) def reconnect(server)
print "Trying to reconnect to #{server}...\n" print "Trying to reconnect to #{server}...\n"
begin
@connections[server]["nntp"] = Net::NNTP.new(server) @connections[server]["nntp"] = Net::NNTP.new(server)
print "Connection type: #{@connections[server]["nntp"].type.to_s}\n" 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 end
def add(messid, id, server, subject) def add(messid, id, server, subject)
@ -118,6 +131,8 @@ def get_articles(cachedir=false)
end end
end end
rescue Net::NNTP::RuntimeError rescue Net::NNTP::RuntimeError
print "Caught Net::NNTP::RuntimeError reading from server #{server}\n"
print "Error: #{$!}\n"
rescue Errno::EPIPE, Errno::ECONNRESET rescue Errno::EPIPE, Errno::ECONNRESET
print "Caught Errno::EPIPE reading from server #{server}\n" print "Caught Errno::EPIPE reading from server #{server}\n"
print "Error: #{$!}\n" print "Error: #{$!}\n"