diff --git a/trunk/ripnews/news/article.rb b/trunk/ripnews/news/article.rb index 925965f..88c4472 100644 --- a/trunk/ripnews/news/article.rb +++ b/trunk/ripnews/news/article.rb @@ -45,7 +45,7 @@ def initialize(nntpservers, groupname, newsrc="~/.newsrc") @connections[server]["newsrc"] = News::Newsrc.new("#{newsrc}.#{server}") set_skip_ids(server, @connections[server]["newsrc"].marked_articles(@group)) rescue SocketError, Errno::EINVAL - print "Connection to #{server} failed\n" + print "Connection to #{server} failed: #{$!}\n" del_server(server) end } @@ -55,7 +55,7 @@ def reconnect(server) begin @connections[server]["nntp"] = Net::NNTP.new(server) rescue SocketError - print "Reconnect to #{server} failed\n" + print "Reconnect to #{server} failed: #{$!}\n" del_server(server) raise PermError, "Couldn't connect to #{server}" end @@ -77,8 +77,23 @@ end def del_server(server) print "Removing server #{server} from list\n" + dellist = [] @connections.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 def get_articles(cachedir=false) @@ -86,7 +101,7 @@ def get_articles(cachedir=false) begin first, last = get_group_info(server) rescue PermError - print "#{$!}\n" + print "Error: #{$!}\n" del_server(server) next end @@ -103,13 +118,13 @@ def get_articles(cachedir=false) print " reading articles from server: #{server}\n" range = Set::IntSpan.new("#{@connections[server]["first"]}-#{@connections[server]["last"]}") rangelist = rechunk_runlist(range.diff(@connections[server]["skip_ids"]).run_list) - print "rangelist: #{rangelist}\n" if Debuglevel >1 - print "rangelist: #{rangelist.type.to_s}\n" if Debuglevel >1 - print "rangelist elements: #{range.diff(@connections[server]["skip_ids"]).elements}\n" if Debuglevel >1 + print "rangelist: #{rangelist}\n" if Debuglevel > 2 + print "rangelist: #{rangelist.type.to_s}\n" if Debuglevel > 2 + print "rangelist elements: #{range.diff(@connections[server]["skip_ids"]).elements}\n" if Debuglevel >2 begin unless rangelist == nil or rangelist =~ /^$/ for i in rangelist.split(',') - print "i: #{i}\n" if Debuglevel > 1 + print "i: #{i}\n" if Debuglevel > 2 begin resp, subj_lines = get_xhdr(server, i, "subject") resp, messid_lines = get_xhdr(server, i, "message-id") @@ -138,6 +153,7 @@ def get_articles(cachedir=false) end end rescue PermError + print "Error: #{$!}\n" del_server(server) next end