- killed a nasty bug where ripnews would try to get articles from

deleted servers
- a bit clearer error messages
This commit is contained in:
Ward Wouts 2002-08-02 12:09:33 +00:00
parent ad42b06329
commit 01a068ecaa

View file

@ -45,7 +45,7 @@ def initialize(nntpservers, groupname, newsrc="~/.newsrc")
@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))
rescue SocketError, Errno::EINVAL rescue SocketError, Errno::EINVAL
print "Connection to #{server} failed\n" print "Connection to #{server} failed: #{$!}\n"
del_server(server) del_server(server)
end end
} }
@ -55,7 +55,7 @@ def reconnect(server)
begin begin
@connections[server]["nntp"] = Net::NNTP.new(server) @connections[server]["nntp"] = Net::NNTP.new(server)
rescue SocketError rescue SocketError
print "Reconnect to #{server} failed\n" print "Reconnect to #{server} failed: #{$!}\n"
del_server(server) del_server(server)
raise PermError, "Couldn't connect to #{server}" raise PermError, "Couldn't connect to #{server}"
end end
@ -77,8 +77,23 @@ end
def del_server(server) def del_server(server)
print "Removing server #{server} from list\n" print "Removing server #{server} from list\n"
dellist = []
@connections.delete(server) @connections.delete(server)
@serverlist.delete(server) @serverlist.delete(server)
print "@servers.length #{@servers.length}\n"
for i in (0...@servers.length)
dellist.push(i)
end
for i in (dellist.reverse)
if @servers[i] == server
@messids.delete_at(i)
@ids.delete_at(i)
@servers.delete_at(i)
@subjects.delete_at(i)
end
end
@sorted = false
@grouped = false
end end
def get_articles(cachedir=false) def get_articles(cachedir=false)
@ -86,7 +101,7 @@ def get_articles(cachedir=false)
begin begin
first, last = get_group_info(server) first, last = get_group_info(server)
rescue PermError rescue PermError
print "#{$!}\n" print "Error: #{$!}\n"
del_server(server) del_server(server)
next next
end end
@ -103,13 +118,13 @@ def get_articles(cachedir=false)
print " reading articles from server: #{server}\n" print " reading articles from server: #{server}\n"
range = Set::IntSpan.new("#{@connections[server]["first"]}-#{@connections[server]["last"]}") range = Set::IntSpan.new("#{@connections[server]["first"]}-#{@connections[server]["last"]}")
rangelist = rechunk_runlist(range.diff(@connections[server]["skip_ids"]).run_list) rangelist = rechunk_runlist(range.diff(@connections[server]["skip_ids"]).run_list)
print "rangelist: #{rangelist}\n" if Debuglevel >1 print "rangelist: #{rangelist}\n" if Debuglevel > 2
print "rangelist: #{rangelist.type.to_s}\n" if Debuglevel >1 print "rangelist: #{rangelist.type.to_s}\n" if Debuglevel > 2
print "rangelist elements: #{range.diff(@connections[server]["skip_ids"]).elements}\n" if Debuglevel >1 print "rangelist elements: #{range.diff(@connections[server]["skip_ids"]).elements}\n" if Debuglevel >2
begin begin
unless rangelist == nil or rangelist =~ /^$/ unless rangelist == nil or rangelist =~ /^$/
for i in rangelist.split(',') for i in rangelist.split(',')
print "i: #{i}\n" if Debuglevel > 1 print "i: #{i}\n" if Debuglevel > 2
begin begin
resp, subj_lines = get_xhdr(server, i, "subject") resp, subj_lines = get_xhdr(server, i, "subject")
resp, messid_lines = get_xhdr(server, i, "message-id") resp, messid_lines = get_xhdr(server, i, "message-id")
@ -138,6 +153,7 @@ def get_articles(cachedir=false)
end end
end end
rescue PermError rescue PermError
print "Error: #{$!}\n"
del_server(server) del_server(server)
next next
end end