diff --git a/trunk/ripnews/news/article.rb b/trunk/ripnews/news/article.rb index 3482b75..262068f 100644 --- a/trunk/ripnews/news/article.rb +++ b/trunk/ripnews/news/article.rb @@ -71,7 +71,7 @@ end def get_articles(cachedir=false) for server in @connections.keys - first, last = get_group_info(server, @group) + first, last = get_group_info(server) @connections[server]["first"] = first ? first : 0 @connections[server]["last"] = last ? last : 0 end @@ -88,7 +88,7 @@ def get_articles(cachedir=false) 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 "rangelsit 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 >1 unless rangelist == nil or rangelist =~ /^$/ for i in rangelist.split(',') print "i: #{i}\n" if Debuglevel > 1 @@ -120,7 +120,7 @@ def get_articles(cachedir=false) save_cache(cachedir) end -def get_group_info(server, group) +def get_group_info(server) timedout = 0 resp = "" first = "" @@ -130,11 +130,11 @@ def get_group_info(server, group) print "Too many timeouts!\n" return false end - timeout(180) do + timeout(30) do begin - resp, count, first, last, name = @connections[server]["nntp"].group(group) + resp, count, first, last, name = @connections[server]["nntp"].group(@group) rescue Net::NNTP::RuntimeError - print "Couldn't open group: #{group}\n" + print "Couldn't open group: #{@group}\n" return false rescue Errno::EPIPE, Errno::ECONNRESET print "Caught Errno::EPIPE reading from server #{server}\n" @@ -173,14 +173,20 @@ def get_xhdr(server, range, header) rescue Errno::EPIPE, Errno::ECONNRESET print "Caught Errno::EPIPE reading from server #{server}\n" print "Error: #{$!}\n" - retry if reconnect(server) + if reconnect(server) + get_group_info(server) + retry + end end end return resp, lines rescue TimeoutError print "Time out, reconnecting to server\n" timedout += 1 - retry if reconnect(server) + if reconnect(server) + get_group_info(server) + retry + end end end @@ -234,15 +240,20 @@ def get_body(server, message) rescue Errno::EPIPE, Errno::ECONNRESET print "Caught Errno::EPIPE reading from server #{server}\n" print "Error: #{$!}\n" - reconnect(server) - retry + if reconnect(server) + get_group_info(server) + retry + end end end return resp, id, messid, list rescue TimeoutError print "Time out, reconnecting to server\n" timedout += 1 - retry if reconnect(server) + if reconnect(server) + get_group_info(server) + retry + end end end